我们可以使用 TypeScript 语言设计一个 SequentialPromiseQueue 类来实现一个按照顺序执行的 Promise 队列。这个类提供了 push、run 和 clear 等方法,可以用来操作队列中的 Promise 实例。其中,run 方法会按照顺序执行队列中的所有 Promise 实例,并返回一个 Promise 实例,该实例的状态将在队列中的所有 Promise 实例都完成后更新
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class SequentialPromiseQueue { private promises: Promise<any>[];
constructor() { this.promises = []; }
push(promise: Promise<any>) { this.promises.push(promise); }
run() { return this.promises.reduce((acc, promise) => { return acc.then(() => promise); }, Promise.resolve()); }
clear() { this.promises = []; } }
|
测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13
| const queue = new SequentialPromiseQueue();
queue.push(Promise.resolve(1)); queue.push(Promise.resolve(2)); queue.push(Promise.resolve(3));
queue.run().then(result => { console.log(result); });
|