最近遇到一个需求,前端拿到数组后,需要根据拿到数组的每一项的id间隔一段时间请求接口,然后JS是单线程的,你异步操作会单独放到任务队列里去执行,js继续执行下面同步代码。
//第一种实现方式
fn(){
let i = 0;
let arr = [{id:1},{id:2},{id:3},{id:4}];
let work = (index)=>{console.log(arr[index])}
let timer = setInterval(()=>{
if(i<arr.length){
work(i);
}else{
clearInterval(timer)
}
i++;
},1000)
},
//第二种实现方式
fn(){
let arr = [{id:1},{id:2},{id:3},{id:4}];
arr.map((item,index) => {
(function(index) {
setTimeout(function() {
console.log(item);
}, (index + 1) * 1000);
})(index)
})
},