问题标签 [es6-promise]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 试图理解 ES6 Promises:依次执行三个 setInterval
为了理解 ES6 Promises 我试图解决这个问题陈述:
有 3 个 div:div.red
、div.green
和div.blue
。它们必须一个接一个地出现,每个都通过一个setInterval
迭代的不透明度增量(异步任务)。
所以目标是顺序执行 3 个异步任务。
我已经编写了以下代码,这进入了拒绝部分并给出了TypeError : undefined is not a function {stack: (...), message: "undefined is not a function"}
jquery - es6-promise.js polyfill(在 html5rocks,MDN 中提到)不起作用
我有一个使用承诺的 JS 代码。它在 ES6 承诺支持的浏览器中正常工作
如 MDN 中提到的,比 chrome32、firefox26、任何版本的 IE、promise 都不支持的旧版本
我已经应用了这里提到的 polyfill(由 MDN、HTML5Rocks 建议)https://github.com/jakearchibald/es6-promise
Polyfill 文件:“ http://es6-promises.s3.amazonaws.com/es6-promise-2.0.0.min.js ”
我可以看到 polyfill 脚本正在执行,因为编译器到达断点
但我得到一个错误Promise not defined
,当我使用
这是我完整的网页html代码。这是一个简单的示例,您可以在旧浏览器中使用 browserstack 对其进行测试。
我确信错误在我这边,因为到处都建议使用 polyfill。
javascript - 链接包含嵌套 AJAX 调用的 JavaScript Promise
我希望用 JavaScript Promises 替换我现有的一些代码,我只是想确认我没有做错(或者也许有更好的方法)。我正在使用es6-promise库。
我已经更新了三个函数以使用 JavaScript Promises(以前是嵌套的、回调的混乱)。这些函数实际上应该具有双重模式,即我可以像常规函数一样使用它们并让它们返回结果,或者我可以将它们链接在一起。
if
就是检查数据是否缓存在localStorage/sessionStorage中,如果是则函数只返回结果。但是,在我不确定这些值是否已被缓存的情况下(例如第一次运行脚本),我计划将它们链接起来,然后让每个后续函数将其前一个函数的结果保存到 localStorage/sessionStorage (因此promise
链在最后一行)。决赛then
让我有机会从func_3
.
根据我运行的测试,一切似乎都正常,但我只是想知道这是否是最好的方法?以及如何处理可能在列出的 3 个函数中的一个或多个上发生的 AJAX 错误?
注意:我的AjaxRequest
函数也使用相同的 Promise 机制,并在成功时“解决”完整的 XHR,并在失败/错误时“拒绝”相同的完整 XHR。
编辑
在@Bergi 的提示之后,我将代码更新为如下所示(它也同样有效):
node.js - 在 Promise 中引发的异常未显示
我正在开发一个严重依赖 Promises 的节点模块。出于某种原因,当应在 Promise 代码中引发异常时(例如“未定义不是函数”),异常消息不会显示在控制台中 - 承诺链似乎在没有任何反馈的情况下停止,我能做的只是猜猜是什么原因造成的。如何强制 Node 显示所有异常?
javascript - 使用原生 JavaScript Promise 链式异步操作
我已经进行了两个异步操作,然后进行了最终onResult
和onFault
定义。如何链接两个异步操作getConnection
,select
然后最后调用onResult
或onFault
编辑需要帮助来承诺以下序列。
javascript - 如何使用带有原生 ES6 Promises 的 Typescript
我是 Typescript 的完全初学者,我想知道是否可以在 Typescript 中使用 ES6 Promise,以及我必须做些什么才能让它们工作。我正在运行节点 0.11.14 并且在编译过程中出现错误“找不到名称'Promise'”
javascript - Promise.resolve().then vs setImmediate vs nextTick
NodeJS 0.11 以及 io.js 和 Node 0.12 分支都带有原生承诺。
原生 Promise有一个.then
方法,它总是在未来的事件循环周期中执行。
到目前为止setImmediate
,自从我从 nextTick 切换以来,我一直在使用将事情排队到事件循环的下一次迭代:
因为我们现在有了一种新的方法来做到这一点:
我应该使用哪个?另外 -在事件循环之前或之后运行的代码是否Promise.resolve.then
表现得像setImmediate
或像nextTick
?
javascript - 如何判断一个对象是否是 Promise?
无论是 ES6 Promise 还是 bluebird Promise、Q Promise 等。
如何测试给定对象是否是 Promise?
javascript - 正确使用 ES6 生成器和分页
我一直在考虑这个问题,我似乎无法想出一个合理的解决方案来解决这个问题。问题陈述很简单 - 编写一个生成器,它将延迟分页远程数据集。为了简化事情,这是我希望我的图书馆的用户看到的理想情况:
我似乎无法让发电机工作。我在想这样的逻辑会起作用,但我不知道如何实现它。
我确定我在这里想出了点问题,但我似乎找不到任何人使用这样的生成器的例子(大多数人将它们与静态数据一起使用,或者人们在做类似的事情async(function*(){...})
,这并不完全是什么我想做)。这里的重要部分是我希望最终用户能够使用上述数据。
-文斯
javascript - Promise.defer() 浏览器支持
我正在寻找一种方法来创建将在当前范围之外解决的延迟对象。我喜欢延迟对象,正如我Promise.defer()
在 Chrome 38 中看到的那样返回延迟对象。
但在最新的 Firefox 34Promise.defer
中,Safari 8.0 中也未定义。
所以我现在不能Promise.defer
到处使用。未来状态如何?它会在其他浏览器中实现还是会被弃用?