Скажем, у меня есть функция, которая возвращает результат на вход через 1 секунду:
function slowDouble(num) {
setTimeout(() => {
return num * 2;
}, 1000);
}
Теперь я хочу вызвать эту функцию и дождаться возврата результата, чтобы я мог выполнять над ней другие операции. Я попытался обернуть эту функцию в Promise
, но результат возвращается в блок после выполнения оператора 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
. Я знаю, что это очень похоже на другие вопросы, заданные здесь, но я еще не мог понять это.