У меня проблема с функциями async/await в JavaScript. Это происходит во внутреннем приложении, для которого я не могу поделиться исходным кодом, но я собрал быстрое общее воспроизведение моей проблемы:
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function baz(input) {
console.log("4");
await sleep(1000);
console.log("5");
return input;
}
async function bar(input) {
console.log("3");
return await baz(input);
}
async function foo() {
console.log("2");
const foo = await bar("foo");
return foo;
}
console.log("1");
foo();
console.log("6");
Я ожидаю, что это вернет следующее с ожиданием в одну секунду между 4
и 5
:
1
2
3
4
5
6
"foo"
Вместо этого, попробовав это в консоли в Chrome 64.0.3282.167 и Firefox 58.0.2, я получаю следующее:
1
2
3
4
6
undefined
5
Пожалуйста, может кто-нибудь указать, где я ошибаюсь в этом?
foo
. - person Daniel A. White   schedule 18.04.2018undefined
, а не"foo"
. - person CaptObvious   schedule 18.04.2018"foo"
будет выведено на консоль? как вы думаете, какая строка вашего кода выводит это? все ваши console.log являются числовыми, ни разу выconsole.log('foo')
- person Jaromanda X   schedule 18.04.2018