console
var queue = function(arr) {
var res=[];
var sequence = Promise.resolve();
arr.forEach(function (item) {
sequence = sequence.then(item).then(data=>{
res.push(data);
return res
}).catch(data=>{
res.push(data);
return res;
})
})
return sequence
}
var isPaused = false;
var pausePromise = null;
var pauseResolve = null;
function pause() {
return new Promise(resolve => {
if(!isPaused){
resolve()
}else{
const interval = setInterval(() => {
if (!isPaused) {
clearInterval(interval);
resolve();
}
}, 10);
}
});
}
var t = [
_=>{
return new Promise((resolve,reject)=>{
pause().then(_=>{
setTimeout(_=>{
console.log("ok1");
resolve('ok1')
},2000)
})
})
},
_=>{
return new Promise((resolve,reject)=>{
pause().then(_=>{
setTimeout(_=>{
console.log("ok2");
resolve('ok2')
},2000)
})
})
},
_=>{
return new Promise((resolve,reject)=>{
pause().then(_=>{
setTimeout(_=>{
console.log("ok3");
resolve('ok3')
},2000)
})
})
},
_=>{
return new Promise((resolve,reject)=>{
pause().then(_=>{
setTimeout(_=>{
console.log("ok4");
resolve('ok4')
},2000)
})
})
},
]
document.getElementById('btn1').onclick=function(){
queue(t).then(res=>{
console.log(res);
})
}
document.getElementById('btn2').onclick=function(){
if (!isPaused) {
isPaused = true;
}
}
document.getElementById('btn3').onclick=function(){
isPaused = false;
}
<button id="btn1">开始</button>
<button id="btn2">暂停</button>
<button id="btn3">继续</button>