Скажем, у меня есть функция, которая возвращает результат на входе через 1 секунду:
function slowDouble(num) {
setTimeout(() => {
return num * 2;
}, 1000);
}
Теперь я хочу вызвать эту функцию и подождать, пока результат не будет возвращен, чтобы я мог выполнять другие операции надЭто.Я попытался обернуть эту функцию в Promise
, но результат возвращается в блок then после выполнения оператора log
(печать undefined
):
function promisify(num) {
return new Promise((resolve) => {
var res = slowDouble(num);
resolve(res);
});
}
function promisifyTest(num) {
promisify(num).then((res) => {
console.log('then result ', res);
})
}
promisifyTest(4); // undefined
Затем я попытался использовать await
:
async function asyncCallToAPI(num) {
var tt = await promisify(num);
console.log('async result', tt);
}
asyncCallToAPI(3); // undefined
и получил тот же результат undefined
.Я знаю, что это очень похоже на другие вопросы, задаваемые здесь, но я пока не могу понять это.