需求:func t1是一个耗时操作 在mian中想打印t1的结果为[0,1,2]
var data = []
function mian() {
//模拟工作流程
for (var i = 0; i < 5; i++) {
t1(i)
};
console.log(data)
}
mian();
function t1(el) {
//模拟一个耗时操作
setTimeout(()=>{
data.push(el)
},2000);
}
按上述代码执行肯定最后打印为空 因为JS默认异步操作
修改代码如下:
var data = []
async function mian() {
for (var i = 0; i < 3; i++) {
await t1(i);
};
console.log(data)
}
mian();
function t1(el) {
return new Promise(function (resolve,reject) {
setTimeout(()=>{
data.push(el)
resolve();
},1000);
})
}
function t2() {
;
}
await会等待t1中的resolve执行后再继续往下执行