串行、并行
- 串行
- 定义:一个接一个的执行
function f1(){
const p1 = new Promise(function (resolve, reject) {
setTimeout(() => reject("err"), 3000)
})
return p1;
}
function f2(){
const p2 = new Promise(function (resolve, reject) {
setTimeout(() => resolve(2), 1000)
})
return p2;
}
function f3(){
const p3 = new Promise(function (resolve, reject) {
setTimeout(() => resolve(3), 2000)
})
return p3;
}
function fc(arr){
var obj={
rs:[],
rj:[]
};
// Promise.resolve方法调用时不带参数,直接返回一个resolved状态的 Promise 对象。
var sequence = Promise.resolve();
arr.forEach(function (item) {
// 第一次的 then 方法用来执行数组中的每个函数,
// 第二次的 then 方法接受数组中的函数执行后返回的结果,
// 并把结果添加到 data 中,然后把 data 返回。
sequence = sequence.then(item).then(function (res) {
obj.rs.push(res);
return obj;
},function(err){
obj.rj.push(err);
return obj;
});
})
return sequence
}
fc([f1,f2,f3]).then(v=>{
console.log(v)
})
执行结果
{ rs: [ 2, 3 ], rj: [ 'err' ] }
- 并行
- 定义:同时执行
Promise.all([p1,p2,...])