众所周知,js是异步的,在写脚本的时候,很多情况需要一步一步的同步执行,想要达成同步,有很多,但是代码最美的还是async/await了。

脚本执行过程中,有的时候需要等待上一步完成,有的时候需要等一会儿再执行下一步,下面给出三个例子:

第一个,是基于await的非阻塞暂停等待,其实是await包了一个setTimeout

//
//第一个,延时,是一个不阻塞的sleep
//
function sleep(ms) {
 return new Promise(resolve => setTimeout(resolve, ms));
}
//
//
async function main() {
 for(i=0;i<10;i++){
  console.log('Hello');    //有的时候每次循环太快,同时发出好几个请求,导致部分请求返回异常
  await sleep(20);
 }
}
//
//
main();
//

第二个,是setTimeout(),当然要粘一个地址

//
//第二个
//
setTimeout(function(){
    console.log("Hello World");    //随便用,只是经过2秒延时后,只会执行这个函数里的部分
}, 2000);                          //外面依然是异步同时进行
//

第三个,是经典的await,当然也要贴贴

//
//第三个,是一个经典的await
//当 async 函数执行到 await 的时候
//会暂停整个async函数的执行进程并出让其控制权
//只有当其等待的基于Promise 的异步操作被兑现或被拒绝之后才会恢复进程。
//
function getSomething() {
 return "something";
}
//
async function testAsync() {
 return Promise.resolve("hello async");
}
//
async function main() {
 const v1 = await getSomething();
 const v2 = await testAsync();
 console.log(v1, v2);
}
//
//
main();
//

仅以此记录,备日后好找。