蓝鸟的done()和spread()之间的区别

时间:2015-04-01 09:29:20

标签: javascript promise q bluebird

您好我没有得到蓝鸟库JavaScript的spread()done()的区别。甚至蓝鸟是Q的包装,所以Q也有两个函数&# 39; s库。

有人可以解释一下这两个功能之间有什么区别吗?

提前致谢!

1 个答案:

答案 0 :(得分:7)

  

即使蓝鸟也是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进行比较,{{3}}建议无限制使用。

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