javascript - done() 与 bluebird 的 spread() 之间的区别

标签 javascript promise q bluebird

嗨,我不明白 spread() 与 JavaScript bluebird 库的 done() 有什么区别。甚至 bluebird 也是 Q< 的包装器 所以 Q 在它的库中也有这两个函数。

谁能解释一下这两个函数之间的区别是什么?

提前致谢!

最佳答案

Even bluebird is wrapper of Q so…

哦,绝对不是。我希望这不会使您的问题无效?

I am not getting what is the difference of spread() vs done()?

API 文档可能会有很大帮助:

  • spread是“就像调用 .then,但实现值或拒绝原因必须是一个数组,它被扁平化为处理程序的形式参数。

    如果您对数组有 promise ,spread 将使用多个参数 调用您的回调。

    Q 的作用是一样的:spread是“then,但将数组“传播”到可变参数实现处理程序中。

  • done是“.then(),但是任何结束于此的未处理的拒绝都将作为错误抛出。[...它]用于显式标记 promise 链的末端。

    有关这方面的更多详细信息,请参阅 error handling文档。请注意,这里的 bluebird 与 Q 完全不同,因为它巧妙地计算出未处理的拒绝和 reports them on its own。 - 你不必明确地告诉它在拒绝到达某个点时抛出全局错误。

    将其与 Q's done documentation 进行比较,建议无限制使用。

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

关于javascript - done() 与 bluebird 的 spread() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29387231/

相关文章:

javascript - 使用 q.js,q.all 是否执行立即函数?

javascript - 如何以非静态形式使用 Q.all?

javascript - Vuejs 仅在加载数据后挂载子组件

javascript - 由于 JavaScript 延迟错误,图像 slider 无法工作

javascript - 显示表格根据动态选项的选择变化进行显示

javascript - 我如何从这个 jsFiddle 动态添加一个延迟到 promise 中?

javascript - Promise.then 函数内部的外部变量没有被改变

javascript - document.getElementById 在 asp.net 中的 <div> 上失败

javascript - 在 Angular 中处理服务和组件之间的异步数据

node.js Q Promise 然后是 Promise 链