Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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 ES5与ES6承诺_Javascript_Promise_Es6 Promise - Fatal编程技术网

Javascript ES5与ES6承诺

Javascript ES5与ES6承诺,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我想知道JS承诺是否是ES5的一部分?如果是这样,为什么它有时在旧浏览器中不起作用,我们必须为它们添加一个多边形填充。此外,在这种情况下,应添加哪种polyfill,ES5或ES6?对此我有点困惑。ES5没有承诺。像jQuery或Angular这样的库有自己的自定义和非标准promise实现 与ES5一起使用的流行Promise实现有Bluebird(与ES6标准兼容)和Q(最初与ES6标准不兼容,但似乎正在朝这个方向发展)以及RSVP 也不是真正的多边形填充,因为如果存在本机承诺,因为它们添加

我想知道JS承诺是否是ES5的一部分?如果是这样,为什么它有时在旧浏览器中不起作用,我们必须为它们添加一个多边形填充。此外,在这种情况下,应添加哪种polyfill,ES5或ES6?对此我有点困惑。

ES5没有承诺。像jQuery或Angular这样的库有自己的自定义和非标准promise实现

与ES5一起使用的流行Promise实现有Bluebird(与ES6标准兼容)和Q(最初与ES6标准不兼容,但似乎正在朝这个方向发展)以及RSVP

也不是真正的多边形填充,因为如果存在本机承诺,因为它们添加了额外的特性,它们就不会妨碍

ES6承诺中有一些纯聚填充。这里有一个是RSVP的子集:

使用polyfill的原因不止于此,您可以在此处阅读:


在堆栈溢出问题上,要求推荐特定的polyfill库被认为是离题的,因此我不会对此发表评论。

ES5没有承诺。像jQuery或Angular这样的库有自己专有的promise实现。ES5没有promise作为语言的一部分。对于ES5,承诺只是一种设计模式。ES5中确实有许多库实现了许多不同类型的承诺。你甚至可以自己实现它们,因为这只是一种设计模式。@slebetman你能给我提供一些关于promise实现的简单例子吗?@ParamSingh-在我的回答中已经有两个promise库可用于ES5。@ParamSingh-这个代码笔与这里的任何东西有什么关系?@KirillSlatin-我已经改为“习俗和非标准“,虽然我宁愿把精力花在有意义的内容上,也不愿编造文字,但不会让任何人感到困惑。@ParamSingh-See,@ParamSingh-ES5,标准,不包括承诺。我们已经说过了。很长一段时间以来,浏览器已经超越了ES5,实现了ES6的部分功能,包括承诺。但是,严格的ES5实施并没有承诺,而且它们在任何方面都不是ES5标准的一部分。它们被添加到ES6中的标准中。有一个单独的Promissions/a+标准,它只定义存在时间比ES6长的Promissions。@ParamSingh-定义Promissions的
处理程序的行为。then()
处理程序是整个Promission标准的一个元素。ES6在其规范中纳入了承诺定义的这一部分。