gpt4 book ai didi

javascript - Q 库 (javascript) - 在与 Q.all() 的 promise 中处理 q.reject()

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:29:26 27 4
gpt4 key购买 nike

我正在使用 Express 构建一个博客站点,并且是第一次使用 Q,我希望能够利用资深 Q 用户的知识。

我向我的数据库发出一个请求以加载帖子数据,另一个请求命中 Instagram API(除非它已经缓存)并返回一些 json。所以我有类似的东西:

Q.all([blogPromise, instagramPromise]).then(好, 坏);

我遇到的问题是说我的请求在我的 instagramPromise 中失败了,我调用了 deferred.reject(),我的不好 函数被调用。但是,如果我的 blogPromise 解决了,我仍然想用博客文章数据加载页面,但是当我的 bad 函数被调用时,我似乎没有得到任何参数(例如,我没有得到成功获取的 blogPromise 数据)。

鉴于此,似乎我唯一的选择是在出现错误时不调用 deferred.reject(),而是调用 deferred.resolve()比如 deferred.resolve({error: true}) 然后我可以在我的 good 函数中使用它来处理传递给我的 View 的内容。

所以我的问题是,这听起来对吗?这不是滥用 Q 使用 resolve 而实际上我遇到错误并且应该使用 reject 吗?还是我遗漏了 Q 的某些内容,可以采用更好的方法?

最佳答案

如果您希望在 blogPromiseinstagramPromise 都解决或拒绝时解决您的 promise ,您需要使用 allSettled method .这是文档中的示例:

Q.allSettled([blogPromise, instagramPromise])
.then(function (results) {
var loaded = results.filter(function (result) {
return result.state === "fulfilled";
});
good(loaded);
});

allSettled 的 then 回调中,您可以过滤成功加载的结果并将它们传递给 good 函数。或者用 bad one 以某种方式处理失败的结果。

关于javascript - Q 库 (javascript) - 在与 Q.all() 的 promise 中处理 q.reject(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34375011/

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