gpt4 book ai didi

javascript - Q - 链接同步 promise 来处理成功和失败

转载 作者:行者123 更新时间:2023-11-28 09:14:40 25 4
gpt4 key购买 nike

我希望这应该很简单..

我知道如何进行基本的 promise 链:

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(main()),或者如果您想将 return PromisePrinter(augmentsAndReturnsTheData(data1))它在给定步骤内。在 Promise 原型(prototype)上没有特殊的方法可以做到这一点,就像 thencatchfinally 那样,因为你正在做一个非常这里的独特操作:

  • 如果 promise 履行(异步返回),您将记录成功,然后返回以通过。
  • 如果 Promise 被拒绝(异步抛出),您将记录错误,然后返回以从该错误中恢复。 (如果您想继续传递错​​误,则可以重新抛出它。)

现有的 finally 是您想要的,但并不真正适合,因为它向前传递错误(如同步 finally)并且不采取任何操作值或错误(例如同步finally)。

关于javascript - Q - 链接同步 promise 来处理成功和失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15816498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com