我一直在玩几种不同的方式来链接一系列功能,而且似乎找不到我特别喜欢的功能。以下是我最后决定但仍然不热衷的事情。
有人可以建议更清洁,更简洁的模式吗?我不想选择Async.js或库。
[
this.connectDatabase.bind(this),
this.connectServer.bind(this),
this.listen.bind(this)
].reduce(
(chain, fn) => {
let p = new Promise(fn);
chain.then(p);
return p;
},
Promise.resolve()
);
聚苯乙烯。任何其他提示都受到欢迎。
答案 0 :(得分:6)
在stackoverflow上找到了关于如何动态链接promise的解决方案:
iterable.reduce((p, fn) => p.then(fn), Promise.resolve())
答案 1 :(得分:2)
ES7 async / await怎么样? 在您的代码中使用奇怪/旧的绑定(this),但不要与您的示例混淆。
async function x() {
try {
await this.connectDatabase.bind(this);
await this.connectServer.bind(this);
await this.listen.bind(this);
} catch(e) {
throw e;
}
}
或更通用的
async function () {
for (let item of yourArray) {
try {
await item.bind(this); //strange bind of your code.
} catch(e) {
throw e;
}
}
}