众所周知,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();
//
仅以此记录,备日后好找。