我在使用JavaScript的async/await函数时遇到了问题。这个问题出现在一个内部应用程序中,我无法分享其源代码,但我制作了一个快速通用的问题复现:
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
的回应。 - Daniel A. Whiteundefined
而不是"foo"
。 - CaptObvious"foo"
?你认为哪一行代码会输出它?所有的console.log
都是数字,你从未使用过console.log('foo')
。 - Jaromanda X