我今天,学了同步和异步。
然后写出一个简单的async函数,接着在循环过程中遇到了问题,问题很大,因为他一直在calling1这边不断循环产生,让我觉得不河里。
function functionA(){
var result = 1+2
return new Promise(resolve => {
setTimeout(() => {
resolve(result);
}, 1000);
});
}
function asyncFun(){
console.log("calling1...")
await functionA()
console.log("calling2...")
}
while(1){
asyncFun()
}
从while这边开始就会一直循环 “calling1…”,接着通过一段时间的钻研考究,浅浅终于发现奥义所在!
await的目的是暂停指定行的操作,等待结果回传,成功后继续执行,而此时并不会影响循环中的其他行指令。也就是说,在asyncFun()中,functionA()被暂停了,等待一秒钟后得到返回值 3 ,但是此时循环中会一直循环输出“calling1…”
那么只需要将其修改成
while(1){
await asyncFun()
}
就可以完美的按照顺序执行了!