AL-*_*ami 3 javascript asynchronous async-await
我正在javascript中探索async/await的概念.我知道async函数返回一个应该在未来时间内解决的promise并且它不会阻止代码的自然执行.这里我有一个我写的代码测试javascript的异步执行.
console.log("1")
async function asyncFunc(){
for(i=0;i<10000000;i++){
}
console.log("3")
}
asyncFunc().then(()=>{console.log('4')});
console.log("2");
Run Code Online (Sandbox Code Playgroud)
我除了代码将以下列方式执行:
第一个console.log()打印1
其次,调用异步函数.由于异步代码是非阻塞的,因此最后一个console.log()将执行,从而在控制台中打印2.
之后,执行async函数内的console.log()并在控制台中打印3.
最后,承诺将被解决,并且
then将执行console.log()内部并打印4.所以预期产量:1,2,3,4
但实际上我的输出为1,3,2,4.
为什么它表现得像这样,而不是我期望的方式
该函数在完成运行之前不会返回一个promise(除非你await在其中有另一个promise).
循环运行(阻塞所有内容),然后console.log("3")进行评估,然后返回一个promise.
调用函数继续运行(记录2).
最后,释放事件循环并调用传递给的函数then.
将函数标记为异步不会将其中的同步代码转换为异步代码.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |