Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何实现承诺/A+;实现不同?_Javascript_Promise_Q_Bluebird_Rsvp Promise - Fatal编程技术网

Javascript 如何实现承诺/A+;实现不同?

Javascript 如何实现承诺/A+;实现不同?,javascript,promise,q,bluebird,rsvp-promise,Javascript,Promise,Q,Bluebird,Rsvp Promise,规范没有涵盖承诺库的哪些方面?不同的实现有什么不同 请举例说明实际差异(如蓝鸟和Q之间的差异)。几乎所有差异。Promises/A+规范旨在实现promise互操作性,它的构建使promise库(现在是原生Promises)可以相互通信。这样做的目的是可以预测承诺的行为,并定义承诺如何被其他库吸收 引用规范: 本规范详细说明了then方法的行为,提供了一个可互操作的基础,所有承诺/A+符合承诺的实现都可以依赖该基础来提供。因此,应认为该规范非常稳定。尽管Promises/A+组织可能偶尔会修改本

规范没有涵盖承诺库的哪些方面?不同的实现有什么不同


请举例说明实际差异(如蓝鸟和Q之间的差异)。

几乎所有差异。Promises/A+规范旨在实现promise互操作性,它的构建使promise库(现在是原生Promises)可以相互通信。这样做的目的是可以预测承诺的行为,并定义承诺如何被其他库吸收

引用规范:

本规范详细说明了
then
方法的行为,提供了一个可互操作的基础,所有承诺/A+符合承诺的实现都可以依赖该基础来提供。因此,应认为该规范非常稳定。尽管Promises/A+组织可能偶尔会修改本规范,对其进行一些小的向后兼容更改,以解决新发现的死角情况,但只有在仔细考虑、讨论和测试之后,我们才会集成大型或向后不兼容的规范。最后,核心承诺/A+规范没有涉及如何创建、履行或拒绝承诺,而是选择专注于提供可互操作的方法。未来在配套规范中的工作可能涉及这些主题

不包括以下内容:

  • 创建承诺(这是规范)
  • 承诺聚合(尽管大多数实现支持
    .all
  • Progression(这是最新版本,很快将被imo取代)
  • 取消(这是最重要的)
  • 未处理的拒收监控(没有规范,但有检查讨论)
  • 堆栈跟踪
例如,蓝鸟和Q都是完全承诺/A+投诉,但在很多方面有所不同:

  • 下一个Q,v2引入了估算,蓝鸟打算最终不赞成渐进式,而赞成C#的IProgress
  • 创建承诺通常在Q中使用延迟(尽管它现在提供了一个承诺构造函数变体),Bluebird鼓励使用承诺构造函数
  • Bluebird具有更健壮和更强的promisification能力,可以在单个命令中将整个回调API转变为承诺。Q作者Kris构建了Q-IO,该Q-IO手动提供文件系统和http模块
  • Bluebird允许通过
    .bind
    和promise数组方法(
    .map
    .reduce
    .filter
    等)对
    值进行范围绑定
  • Q具有异步队列和通过Q连接的RPC之类的基本体
  • Bluebird大约快100倍,具有更好的堆栈跟踪和自动未处理拒绝检测。它还可以减少每个承诺所消耗的RAM内存