所以我有這個簡單的場景,其中兩個處理器的代碼基本上是相同的:防止重複/拒絕回調
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