问题标签 [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.

0 投票
1 回答
148 浏览

javascript - 如何正确使用承诺返回 2 个不同的结果

我正在尝试使用 ES6 在 JavaScript 中使用 Promises 从对象的 2 个方法返回数据,这将在生产中调用端点。

我的MovieApi对象我有 2 个承诺,我想首先返回一个电影列表,然后是 1 个按 id 的电影。我想使用承诺来避免回调地狱。我正在遵循列出的方法作为Arent promises just callbacks问题的答案,但我显然做错了,因为我有错误findMovie is not defined

像这样调用电影承诺......但尝试调用我的第二种.then()方法时出现错误

有没有办法摆脱回调地狱,或者我只需要再次调用 MovieApi 对象,本质上与我使用回调有相同的可读性问题。

0 投票
3 回答
3941 浏览

javascript - 即使我在所有 then-ables 中都使用了拒绝回调,我是否总是需要 catch() ?

我将捕获放在最后,但它们至少在一个特定实例中返回空对象。对于任何不为人知的事情是否需要捕获,或者只是把我搞砸了?

这是错的吗?或者它是否有某种用途,即使我仍然对.then(resolve, reject)所有父链 then-ables 中的所有方法使用使用错误/拒绝处理程序?

编辑:更好的代码示例,我希望。我想我可能仍然在命名中使用某种反模式,我rejectMessage在我的例子中,它是 jqXhr 对象,对吧?

所以也许我应该准确地命名它们或什么?即jqXhr?顺便说一句,我喜欢在每个内部当场拒绝它的原因then(),如果有错误,是因为这样我可以大量记录每个单独的呼叫,如果那里特别有问题,那我就没有追踪任何东西。微博,因为我可以。

Promise 正在帮助以这种方式打开调试的世界。

这是我尝试过的三个示例。我更喜欢方法 1 和方法 2,我绝不会回到方法 3,这是我在应许之地开始的地方。

我也在某个地方运行它onready作为另一个备份。

编辑错误示例

0 投票
3 回答
781 浏览

javascript - 我可以在 Parse JavaScript SDK 中使用其他的 Promise 实现吗?

我担心使用 JQuery 兼容的 Promise 对 Parse 的引用,因为我读过 jQuery Promise允许消费者改变 Promise 的状态。是否可以在 Parse JavaScript SDK中使用另一个已知符合Promises/A+的 Promise 实现(例如ECMAScript 6 实现Bluebird )?

通常我会假设这是不可能的,但是在 Parse JavaScript SDK 的 v1.4.2 中,Parse.Promise 的实现将属性“_isPromisesAPlusCompliant”定义为 false,然后在库中的各种函数中检查该属性。

注意这个问题最初是在Parse Developers group上提出的,但没有收到任何回复。

0 投票
2 回答
887 浏览

javascript - 一旦所有内部并发承诺都已解决或被拒绝,就解决一个承诺

我正在寻找类似的东西Promise.all,即使在一个或多个承诺拒绝或抛出错误的情况下,也会继续同时解决承诺。每个请求不依赖于另一个请求。

接近我想要的 - 请查看评论

我已经成功地Promise.all一起使用,只解决了 fetchRequest 承诺,这导致了预期的结果(一系列结果和undefined's),但我觉得这是错误的做事方式。它还消除了我使用抛出错误的能力。

有效,但感觉像是对 resolve 的错误使用

请仅本机 es6 Promise API 回答谢谢。

0 投票
2 回答
9112 浏览

javascript - 在承诺中超时功能的最佳一般做法是什么

承诺一个带有超时的函数调用

我已经看到许多资源提供了类似的示例,Promise.race用于在给定的时间段内使函数调用超时。这是一个很好的例子,说明如何Promise.race在实践中使用。这是一些示例代码:

上面使用的简单方法Promise.race在超时之前func完成后立即拒绝承诺。否则,一旦func函数在超时间隔之前完成,项目就会完成。

这听起来不错且易于使用。

但是,这是在 Promise 中使用超时的最佳做法吗?

当然,如果我们想使用 Promises 为函数调用设置超时,则可以使用上述方法。这些行动似乎仍然是一个很好的承诺。但是,这是否被认为是在 Promise 中使用超时的好习惯?如果没有,使用它有什么缺点?

我一直在寻找替代方法,但找不到本地 Promise 方法来做到这一点。

相反,一些外部 Promise 库提供timeout如下功能:

但是,Promise.timeout()它似乎不是标准 ECMAScript 6 API 的一部分(如果我错了,请纠正我)。是否有任何推荐的方法来使用 ES6 Promises 本地处理超时?

0 投票
1 回答
259 浏览

javascript - Javascript异步示例不起作用

我正在试验 es6 承诺并将它们链接起来,但不明白为什么我的示例不起作用。

我想多次链接 printInterval() 和 setInterval() 并期望 _interval 像这样减少:

  • 等待 3000 毫秒显示此消息
  • 将间隔设置为 2000
  • 等待 2000 毫秒显示此消息
  • 将间隔设置为 1000
  • 等待 1000 毫秒显示此消息
  • 将间隔设置为 500
  • 等待 500 毫秒显示此消息

但我得到以下信息:

  • 等待 3000 毫秒显示此消息
  • 将间隔设置为 2000
  • 将间隔设置为 1000
  • 将间隔设置为 500
  • 等待 500 毫秒显示此消息
  • 等待 500 毫秒显示此消息
  • 等待 500 毫秒显示此消息

.

谢谢你!

0 投票
1 回答
1429 浏览

es6-promise - 从回流商店返回承诺

我正在开发我的第一个反应/回流应用程序,所以我可能以完全错误的方式解决这个问题。我正在尝试从回流商店的操作处理程序返回一个承诺。这是代表我如何尝试执行此操作的最小代码。如果我在浏览器中显示它,我会收到一条错误消息,指出永远不会捕获承诺,因为在启动操作时不会将 onLogin 函数的结果传回。做这个的最好方式是什么?

0 投票
6 回答
36191 浏览

javascript - 创建(ES6)承诺而不开始解决它

使用 ES6 Promise,如何在不定义解决逻辑的情况下创建 Promise?这是一个基本示例(一些 TypeScript):

使用其他 Promise 库很容易做到这一点。以 JQuery 为例:

我能看到的唯一方法是将 resolve 函数存储在 Promise 的执行程序中的某个地方,但这看起来很混乱,而且我不确定它是在何时运行该函数时定义的——它总是在构造时立即运行吗?

谢谢。

0 投票
1 回答
855 浏览

javascript - 如何将此延迟样式承诺转换为 ES6 样式承诺

请参阅Nolan Lawson的文章中的新手错误 #4:使用“延迟”:We have a problem with promises(顺便说一句,这是一篇很棒的文章!),我尽量不再使用延迟样式的 promises。最近我遇到了一个实际示例,我无法弄清楚如何不以延迟方式对其进行编码,所以我需要一些建议。

这是一个例子,一个角度工厂:

我隐藏了一些不相关的细节(例如 的实现_modalScope),核心思想是:$modal提供一个包含两个按钮的 ui 小部件:ConfirmCancel单击Confirm时,调用_modalScope.confirm并解决延迟的 Promise,否则单击Cancel_modalScope.cancel时通过调用来拒绝延迟的Promise。

我试图通过 using 重写return $q(function(resolve, reject) { ... }),但我真的不知道如何/何时在这个构造函数中调用resolvereject,因为真正的逻辑在_modalScope.confirm/cancel方法中。我为这个问题苦苦挣扎了好几天,真的希望有人能帮助我。

谢谢!

0 投票
1 回答
2326 浏览

javascript - 扁平化 javascript 中的 Promise

bluebird 库似乎自动将Promise::then两者用作 promise 上的“map”和“flatMap”的等价物,例如,参见这个例子。

这是 es6 Promise API 的合约吗?例如,我在这里这里没有提到这种扁平化行为。