实现方式
const promise1 = () => {
return new Promise(resolve => {
setTimeout(() => {
console.log('promise1');
resolve();
}, 1000);
});
};
const promise2 = () => {
return new Promise(resolve => {
setTimeout(() => {
console.log('promise2');
resolve();
}, 1000);
});
};
const promise3 = () => {
return new Promise(resolve => {
setTimeout(() => {
console.log('promise3');
resolve();
}, 1000);
});
};
const promiseQueue = arr => {
arr.reduce(
(accPromise, curPromise) => accPromise.then(() => curPromise()),
Promise.resolve()
);
};
等价于以下代码
promise1().then(() => {
return promise2();
}).then(() => {
return promise3();
});
亦或以下代码
new Promise(resolve => {
setTimeout(() => {
console.log('promise1');
resolve();
}, 1000);
})
.then(() => {
return new Promise(resolve => {
setTimeout(() => {
console.log('promise2');
resolve();
}, 1000);
});
})
.then(() => {
return new Promise(resolve => {
setTimeout(() => {
console.log('promise3');
resolve();
}, 1000);
});
});
网友评论