问题标签 [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 - 使用承诺隐藏异步回调函数的外部范围
我的代码目前采用以下形式:
为什么在这种情况下 x 未定义?
如果我省略了承诺(不需要),如下所示:
然后我就可以成功访问 x 了。我怎样才能信守承诺但仍然可以访问 x?
javascript - promise.all 是如何工作的?
我开始挖掘 Promise 并发现了有趣的 Promise.all。
在 MDN 中指出
Promise.all(iterable) 方法返回一个 promise,当 iterable 参数中的所有 promise 都已解析时,该 promise 将解析。
这基本上意味着 set Promise 在参数列表中的所有 Promise 都已解决之后解决。我试图实现它。我只是承诺ajax调用。
哪个工作正常。但是在我尝试添加 Promise.all 之后,它抛出了一个错误。
正如我所说,这引发了错误“ Promise.all 的参数 1 无法转换为序列。” 所以我假设我没有得到 promise.all 的含义。它是如何工作的?
javascript - Correct way to chain two promises when the second promise depends on the first?
How do I make chain two JQuery async calls using JS Promises while avoiding the pyramid of doom? I know that I can convert a "JQuery" promise to a real promise like this:
If I just want to wait for one promise, I can do this:
If I want to wait for two different ajax calls to be done, I can do this:
However, if I want one call to come after the other one, this doesn't work:
Somehow, I want to call .then() on the promise constructed in the "do stuff" function. What's the idiomatic way to do this?
javascript - 链接两个异步 jQuery 函数时如何完全避开 jQuery 承诺?
我看过很多关于新的 EMCA 承诺的教程,提倡避免 jQuery 库中的“承诺”。他们通常说您可以通过执行以下操作来躲避它们:
但是,当我必须将两个异步 jQuery 函数链接在一起时,这实际上不起作用。如何在不使用 jQuery 的 then() 或 .when() 的情况下将两个 getJSON 调用(第二个调用取决于第一个)链接在一起?
相反,我只想使用 Promise.all 等。
我认为类似的问题问题是交错 jquery 和 EMCA 承诺?
javascript - 如何在 ES6 Promise 链中传播拒绝?
通常这两个 Promise 对象是跨函数调用创建的。我把承诺放在一起,展示了我期望发生的事情:
这应该将拒绝传播到我的父母承诺中。如何在外部承诺中捕获rejectCall_2?
javascript - 为什么 Promise 构造函数需要一个在完成时调用 'resolve' 的函数,但 'then' 不需要 - 它返回一个值?
当我投入研究Promise
s 时,我对以下我没有讨论过的问题的理解已经停止(我发现的只是对Promise
构造函数和Promise
' then
' 函数的具体讨论 - 但不是比较它们的设计模式的讨论)。
1.Promise
构造函数
从 MDN 文档中,我们使用了 Promise 构造函数(添加了我的评论):
具有两个参数的函数对象
resolve
和reject
. 第一个参数实现了承诺,第二个参数拒绝了它。一旦我们的操作完成,我们就可以调用这些函数。
2.then
功能
继续讨论then
可以在对象上调用的函数Promise
(它返回一个新Promise
对象),我们有文档描述的以下函数签名(添加了我的评论):
链接
因为该
then
方法返回一个 Promise,所以您可以轻松地链接 then 调用。
我的问题
从上面的代码片段中,我似乎很清楚,传递给resolve
第 1 阶段中的函数的值(在第二次出现resolve
- 低于 (2),上面)被传递到下一个阶段(第 1 阶段之后的第一个then
函数相同的代码片段)。 第 1 阶段没有返回值。 但是,第 2 阶段的返回值被传递到之后的下一个阶段(第二个then
函数)。
是否在用于创建 a 的设计模式与在现有 Promise 上Promise
使用该函数(也返回 a )之间缺乏对应关系,只是历史上的侥幸(一个需要调用回调但什么都不返回,而另一个返回一个值但不调用回调)?then
Promise
还是我错过了Promise
构造函数使用与函数不同的设计模式的根本原因then
?
javascript - ES2015 相当于 $.Deferred()
我正在将 Babel 用于一个项目,但我遇到了一个非常基本的问题。我非常习惯 jQuery 的 Deferred 对象,我正在努力寻找它的 ES2015 等价物,这就是我基本上想要的:
纠正这个简单的延迟的正确方法应该是什么?
编辑 royhowie 的回答:
javascript - 承诺同步功能
所以,我有一个类似这样的代码。
我想把它做成类似的东西。
我是否应该更改 doSomethingSync ,即:
至:
或者:
javascript - `x = x.then()` 在 Promise 中做了什么?
我正在尝试理解一些具有新颖的承诺方法的代码:
这与正常的链式.then
方法有何不同?使用安全吗?
javascript - 在 promise 解决后解析值
我有这样的代码。我想获取一些内容,然后在加载之后做点什么。所以我使用 Promise.all 并稍后访问解析的值。但它给出了价值,但就像 Promise {' content here'}。(请参阅console.log ..)我打算使用正则表达式来提取它,但然后我检查它的类型不是字符串而是没有键的对象?为什么?