async和await

我今天,学了同步和异步。

然后写出一个简单的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()
}

就可以完美的按照顺序执行了!