Путаница по поводу того, как вернуть результат из асинхронной функции с помощью PromiseJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Путаница по поводу того, как вернуть результат из асинхронной функции с помощью Promise

Сообщение Anonymous »

Я какое-то время не прикасался к JS. Может кто-нибудь объяснить, почему я получаю такой неожиданный результат?
Моя цель — вернуть результат из асинхронной функции. (Или, другими словами, преобразовать асинхронную функцию в синхронную и вернуть из нее результат.)
Покажу это в коде:

Код: Выделить всё






function test1()
{
return new Promise((resolve, reject) => {

setTimeout(() => {
console.log("Timer fires");
resolve("Done");
}
, 2000);

});
}

async function test2()
{
console.log("Before promise");
let result = await test1();
console.log("After promise");

console.log("result=" + result);
return result;
}




let final_result = test2();
console.log("Got final result=" + final_result);




Я предполагал, что когда я вызываю свой test2, он будет ждать результата test1, поэтому я попаду в журнал:

Код: Выделить всё

Before promise
Timer fires
After promise
result=Done
Got final result=Done
Но я получаю следующее:

Код: Выделить всё

Before promise
Got final result=[object Promise]
Timer fires
After promise
result=Done
Это почти как let result = await test1(); выполняется дважды. Как только он сразу же возвращает Promise и каким-то образом пропускает все следующие за ним файлы console.log, а затем, после срабатывания таймера, он выполняет все эти операторы console.log.< /p>
Я явно что-то упускаю в потоке кода последней версии JS.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ng-promise
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»