问题标签 [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 投票
2 回答
141 浏览

javascript - Await more than one promise with Javascript / ECMAScript 6

I would like to start a list of promises and execute a callback when all of then are done (without async/await).

0 投票
1 回答
97 浏览

javascript - 有没有办法从 Jquery Deferred/Promise 到 When-JS Promise

我想在 jquery ajax 调用返回的承诺之外使用 When-JS 功能。有转换方案吗?

编辑 1

https://github.com/cujojs/when/blob/master/docs/api.md#api

0 投票
2 回答
1592 浏览

promise - ECMAScript 6 链式 Promise

我正在尝试链接承诺,但第二个没有调用 resolve 函数。我做错了什么?

代码从第二个函数打印“Getting orders”,但不打印“Order 123”:

获取客户 链式 getCustomers 和 getOrders。等待结果接单

更新。我想在返回承诺的链式方法之间插入控制台上的打印。我想这样的事情是不可能的:

0 投票
20 回答
292146 浏览

javascript - 处理 Promise.all 中的错误

我有一系列要解决的 PromisePromise.all(arrayOfPromises);

我继续继续承诺链。看起来像这样

我想添加一个catch语句来处理单个promise,以防它出错,但是当我尝试时,Promise.all返回它发现的第一个错误(忽略其余的),然后我无法从promise的其余部分获取数据数组(没有错误)。

我试过做类似..

但这并不能解决。

谢谢!

--

编辑:

下面的答案完全正确,由于其他原因,代码被破坏了。如果有人感兴趣,这是我最终得到的解决方案......

Node Express 服务器链


API 调用(route.async 调用)

.catch将for放在 thePromise.all之前.then似乎已经达到了从原始承诺中捕获任何错误的目的,然后将整个数组返回到下一个.then

谢谢!

0 投票
2 回答
485 浏览

javascript - ES6 Promise 区块页面

给定以下测试代码:

此代码应该异步运行,但它会阻止与页面的所有交互。为什么?

这是在 Chrome 44 中测试的,根据这个表Promises 应该被完全实现。

在这里小提琴(警告:阻止标签)

0 投票
28 回答
96465 浏览

javascript - 如何同步确定 JavaScript Promise 的状态?

我有一个纯 JavaScript Promise(内置实现或 poly-fill):

var promise = new Promise(function (resolve, reject) { /* ... */ });

规范中,Promise 可以是以下之一:

  • “解决”和“解决”
  • “解决”和“拒绝”
  • '待办的'

我有一个用例,我希望同步询问 Promise 并确定:

  • Promise 解决了吗?

  • 如果是,Promise 解决了吗?

我知道我可以用它#then()来安排在 Promise 更改状态后异步执行的工作。我不是在问如何做到这一点。

这个问题专门关于Promise 状态的同步询问。我怎样才能做到这一点?

0 投票
7 回答
15716 浏览

javascript - Promise.allSettled 在 babel ES6 实现中

babel用来转换我的node.js@0.10.x代码,但我坚持承诺。

我需要-type 功能,例如allSettled,我可以在其中使用。qbluebirdangular.$q

在 babel 的 core-jsPromise上,没有allSettled方法。

目前我正在使用q.allSettled作为解决方法:

import { allSettled } from 'q';

在 babel polyfill 中有类似的东西吗?或者,哪个是我尝试实现的好算法?

0 投票
2 回答
752 浏览

javascript - XHR OnLoad Promise 阻止其他 OnLoad 回调

我正在尝试从我的服务器下载文件,然后在加载的数据上运行 Promises。我的问题是,我的 Promise 似乎出于某种原因阻止了一切:

它开始下载所有文件,一旦下载第一个文件,它会阻止其他文件下载并运行其“onLoad”回调完整承诺链,然后继续下载剩余的文件。新文件完成后,它会阻止其他下载并运行承诺链等。

我的 onload 回调包含以下内容:

我的睡眠功能如下:

在控制台中它返回:

任何帮助,将不胜感激。

我可以理解当“睡眠”运行时下载被阻止,但我不明白为什么它会在继续下载剩余文件之前运行所有“睡眠 1”、“睡眠 2”和“睡眠 3”。

==== 编辑 ====

我使用“promisified” XMLHttpRequest 和 Promise.all() 加载文件。( http://www.html5rocks.com/en/tutorials/es6/promises/ )

最好的,尼古拉斯

0 投票
1 回答
949 浏览

javascript - 获取 polyfill,未定义的 PromiseValue

尝试DELETE使用 fetch polyfill 发出请求,但我得到Uncaught TypeError: Cannot read property 'then' of undefined了,这是错误promise.then()

这是我的做法:

另一方面,当我/GET提出请求时,一切正常:

知道我做错了什么吗?

0 投票
1 回答
761 浏览

javascript - 使用 Promise 顺序加载

我有一个异步调用数组,我想按顺序调用它们,这意味着我不想在第一个 promise 完成之前调用第二个 promise,依此类推。

在下面的示例中,我有一个循环,它可以动态创建独特的图像并将它们附加到页面上。我希望按顺序附加图像,但由于某种原因,它们并不总是按照创建它们的确切顺序呈现:

我还创建了一个Fiddle来说明这个问题。

我正在使用 bluebird,但我更愿意坚持使用原生 ES6 实现。