所以我有这个简单的场景,其中两个处理器的代码基本上是相同的:防止重复/拒绝回调
function runPromise(promise: Promise<any>) {
ret.count++;
return promise.then(function() {
ret.count--;
ret.count < 1 && ret.cb();
}, function (err) {
err && console.error(err.stack || err);
ret.count--;
ret.count < 1 && ret.cb();
});
}
一个解决方案,我可以用是这样的:
function runPromise(promise: Promise<any>) {
ret.count++;
let resolve = function(){
ret.count--;
ret.count < 1 && ret.cb();
};
return promise.then(resolve, function (err) {
err && console.error(err.stack || err);
resolve();
});
}
但我想知道是否有更清洁更优雅的方式来处理这种情况? 我不需要处理记录之外的错误。
你想做什么?至于我如何阅读它,你试图阻止承诺发射两次,但承诺只发射一次,所以这将是不必要的... – dejakob
我不想写在两个不同的相同的确切代码功能。 –
@AlexanderMills:但为什么你有柜台呢?你应该完全摆脱它,或者用'Promise.all()'取代它,这取决于你实际上想要做什么。 http://xyproblem.info – SLaks