# promise串、并行实现
var f1 = new Promise((resolve, reject)=>{
setTimeout(()=>{
console.log('f1 finished');
resolve({
text:'f1 promise'
})
},2000)
})
var f2 = new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log('f2 finished')
resolve({
text:'f2 promise'
})
},2000)
})
//并行执行
Promise.all([f1,f2]).then(()=>{
console.log('callback')
})
var a = _=>{
return new Promise((resolve,reject)=>{
setTimeout(_=>{
console.log('aa');
reject('fail')
// resolve('a->ok')
},2000)
})
}
var b = _=>{
return new Promise((resolve,reject)=>{
setTimeout(_=>{
console.log('bb');
resolve('b->ok')
},1000)
})
}
// 串行执行promise 构建队列
function queue(arr) {
var res=[];
var sequence = Promise.resolve();
arr.forEach(function (item) {
sequence = sequence.then(item).then(data=>{
console.log(data);
res.push(data);
return res
}).catch(data=>{
//有reject也返回
res.push(data);
return res;
})
})
return sequence
}
queue([a,b]).then(res=>{
console.log(res);
})
← js拖动效果2 promise暂停 继续 →