所以我有这个简单的场景,两个处理程序中的代码基本相同:
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();
});
}
但我想知道是否有一种更清洁,更优雅的方式来处理这种情况? 除了记录错误之外,我不需要处理错误。
答案 0 :(得分:3)
是;你可以使用两个回调:
promise
.catch(err => err && console.error(err.stack || err))
.then(...);
catch()
调用将返回一个非错误的promise(它返回其回调结果的承诺),因此第二个then()
回调将始终运行。
但是,您的整个方法存在缺陷,因为调用者无法知道操作是否失败。