【发布时间】:2015-09-11 07:24:21
【问题描述】:
我发现在 Q 中非常有用的是 Q.allSettled 函数,它可以让你在没有 fail 处理程序的情况下处理失败的情况。
另一方面,如果某些承诺失败,我现在需要使用Q.spread 函数将一些承诺和一些参数传播到then 处理程序,而无需到达fail 处理程序。
可能的解决方案是 Q 的文档中建议的解决方案:
q.allSettled([saveToDisk(), saveToCloud(), 12345])
.spread(function (disk, cloud, somenum) {
console.log('somenum: ' + somenum.value);
console.log("saved to disk:", disk.state === "fulfilled");
console.log("saved to cloud:", cloud.state === "fulfilled");
});
但我想知道,图书馆是否提供类似的东西,比如Q.spreadSettled?
如果没有,是否有计划?我是唯一一个认为拥有这样的东西可能是个好主意的人吗?
【问题讨论】:
-
你使用的是什么版本的节点?
-
10.35,为什么?我的问题更像是一个与 Q 相关的问题,但我猜你想提出其他库,对吧?
-
好吧,JavaScript 有本地传播,
Q.spread只是它的一个垫片。 Q 是一个旧库,我不会使用它,但这不是我的意思。节点 4.0.0 是一个选项吗? -
并非如此,ATM Q 是非常强制性的。出于好奇,你的建议是什么?
-
您能否发布其中一种可行的解决方法?我还是不明白你在找什么。和
Q.allSettled([…]).spread(function(…){…})有什么区别?
标签: javascript node.js promise q