【发布时间】:2015-04-02 00:44:12
【问题描述】:
您好,我不知道 spread() 与 JavaScript 的 bluebird 库的 done() 有什么区别。即使 bluebird 是 Q 的包装器,所以 Q 的库中也有这两个功能。
谁能解释一下这两个函数有什么区别?
提前致谢!
【问题讨论】:
标签: javascript promise q bluebird
您好,我不知道 spread() 与 JavaScript 的 bluebird 库的 done() 有什么区别。即使 bluebird 是 Q 的包装器,所以 Q 的库中也有这两个功能。
谁能解释一下这两个函数有什么区别?
提前致谢!
【问题讨论】:
标签: javascript promise q bluebird
甚至蓝鸟也是 Q 的包装……
哦,绝对不是。我希望这不会使您的问题无效?
我不明白
spread()与done()的区别是什么?
API 文档可能会有很大帮助:
spread 是“类似于调用.then,但执行值或拒绝原因必须是一个数组,它被展平为处理程序的形参。”
如果您有一个数组的承诺,spread 将使用多个参数调用您的回调。
这与 Q 所做的相同:spread 是“类似于 then,但将数组“传播”到可变参数实现处理程序中。”
done 是“类似于.then(),但任何在此处结束的未处理的拒绝都将作为错误抛出。[...它] 用于明确标记结束一个承诺链。"
更多细节可以在error handling 文档中找到。请注意,bluebird 与此处的 Q 完全不同,因为它巧妙地计算出未处理的拒绝和 reports them on its own - 当拒绝到达某个点时,您不必明确告诉它抛出全局错误。
将其与Q's done documentation 进行比较,后者建议无限制使用。
如您所见,spread 和 done 是完全不同的方法,具有不同的目的。此外,Bluebird 和 Q 的 done 模式也不同。
【讨论】: