function delay(count) {
return new Promise(function(resolve) {
setTimeout(function() {
resolve(1000);
}, count);
});
}
async function method1() {
let val = 0;
console.log("one");
val = delay(3000);
console.log("two")
return val;
}
method1().then(function(result) {
console.log(result);
});
以上是我的示例代码。
首先,我没有使用await delay(),这就是我的意图。
首先,编写上述代码的预期流程如下:
- 控制台.log(“一个”)
- console.log("两个")
- 返回值;
- 控制台日志(结果)
- 解决(1000);
但实际情况不同。实际执行结果如下。
- 控制台.log(“一个”)
- console.log("两个")
- 解决(1000)
- 返回值;
- 控制台日志(结果)
我希望return val首先执行的原因是因为这是因为我们认为其余代码将在delay()函数进行异步通信时执行。然而,实际上,return直到delay()完成才执行。
如果我await delay()在delay(). setTimeout退出后,console.log("two")执行,我完全理解这个概念。
但是,如果await不使用,则执行其余代码,但是为什么直到完成才执行return delay()?