【问题标题】:Difference between done() vs spread() of bluebird蓝鸟的done()与spread()之间的区别
【发布时间】:2015-04-02 00:44:12
【问题描述】:

您好,我不知道 spread() 与 JavaScript 的 bluebird 库的 done() 有什么区别。即使 bluebird 是 Q 的包装器,所以 Q 的库中也有这两个功能。

谁能解释一下这两个函数有什么区别?

提前致谢!

【问题讨论】:

    标签: javascript promise q bluebird


    【解决方案1】:

    甚至蓝鸟也是 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 进行比较,后者建议无限制使用。

    如您所见,spreaddone 是完全不同的方法,具有不同的目的。此外,Bluebird 和 Q 的 done 模式也不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 2012-12-24
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 2016-07-14
      相关资源
      最近更新 更多