【发布时间】:2013-10-07 15:28:38
【问题描述】:
这应该很简单,我希望..
我知道如何做基本的承诺链:
main = function() {
returnsAPromise().then(function(data1) {
return augmentsAndReturnsTheData(data1);
}).then(function(data2) {
doesSomethingMeaningfulWithTheData(data2);
});
};
但是,假设我想在最终处理可以处理成功和失败的数据之前添加某种拦截器,例如:
promisePrinter = function(promise) {
var bad, good;
good = function(data) {
console.log(['Success', data]);
return data;
};
bad = function(data) {
console.log(['Failure', data]);
return data;
};
return promise.then(good, bad);
};
如何将其包含在我的链中?尝试了几种不同的方法,但我似乎无法按预期调用 promisePrinter fn。
TIA!
【问题讨论】:
-
您期待什么?承诺打印机(主());应该吐出成功或失败。
-
我希望将 promisePrinter 添加到链中,而不是将承诺传递给它。这样我就可以将它粘贴到承诺流程中的任何地方
-
您可以将每个阶段包装在 promisePrinter 中,即 { return promisePrinter(augmentsAndReturnsTheData(data1)); }
-
或扩展 $.Deferred 以便它自动添加日志记录(覆盖或继承并制作您使用的自定义 $.LoggingDeferred)
标签: javascript promise q