优美的进行延时处理
举一反三将会有更好的用法
<script>
//要延时加载的数据
const bb = [{age:10},{age:11},{age:12}];
//定义一个async函数返回一个Promise
async function cc(){
return new Promise((resolve,reject)=>{
//使用定时器进行延时发送通知
setTimeout(()=>{
resolve();
},1500)
})
}
//定义
async function dd(){
for(const ee of bb){
//【重点】这里会等待cc函数中的Promise发送了通知才会往下执行
await cc();
console.log(ee.age);
}
}
//调用
dd();
</script>
主线程中的代码只有调用dd函数,执行dd函数会进入循环,而从第一次循环中开始就要等待cc函数返回一个结果,否则不往下执行。而cc函数中,要等待1500毫秒才会发送一个通知结果。所以每循环一次就要等待1.5秒返回通知结果,就有了后面的延时效果
async关键字:
放置在一个函数前面,函数前面的async意味着这个函数将return一个Promise。
如果return的不是Promise,js会自动把return的值包装为Promise中resolve的值。