Questions tagged «es6-promise»

ES6 Promise是ECMAScript 2015对象,代表正在进行的异步操作

17
如何访问.then()链中的先前的诺言结果?
我已经将我的代码重组为promises,并构建了一个美好的长而平坦的promise链,其中包括多个.then()回调。最后,我想返回一些复合值,并且需要访问多个中间promise结果。但是,序列中间的分辨率值不在上一个回调的范围内,如何访问它们? function getExample() { return promiseA(…).then(function(resultA) { // Some processing return promiseB(…); }).then(function(resultB) { // More processing return // How do I gain access to resultA here? }); }

2
什么是显式的Promise构建反模式,如何避免呢?
我正在编写代码,执行以下操作: function getStuffDone(param) { | function getStuffDone(param) { var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) { // or = new $.Deferred() etc. | // using a promise constructor myPromiseFn(param+1) | myPromiseFn(param+1) .then(function(val) { /* or .done */ | .then(function(val) { d.resolve(val); | resolve(val); }).catch(function(err) …

18
等到所有诺言都完成,即使有些诺言被拒绝
假设我有一组Promise正在发出网络请求的,其中一个会失败: // http://does-not-exist will throw a TypeError var arr = [ fetch('index.html'), fetch('http://does-not-exist') ] Promise.all(arr) .then(res => console.log('success', res)) .catch(err => console.log('error', err)) // This is executed 假设我要等到所有这些完成为止,无论是否失败。我可能无法使用的资源可能会出现网络错误,但是如果可以得到,我会在继续之前希望这样做。我想优雅地处理网络故障。 既然Promises.all没有任何余地,那么在不使用Promise库的情况下,推荐的处理方式是什么?


7
如何拒绝异步/等待语法?
如何拒绝异步/等待功能返回的承诺? 例如本来 foo(id: string): Promise<A> { return new Promise((resolve, reject) => { someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400)) }); } 转换为异步/等待 async foo(id: string): Promise<A> { try{ await someAsyncPromise(); return 200; } catch(error) {//here goes if someAsyncPromise() rejected} return 400; //this will result in a resolved promise. }); } 那么,在这种情况下,我如何才能正确拒绝这一承诺?

20
在功能范围之外解决Javascript Promise
我一直在使用ES6 Promise。 通常,Promise是这样构造和使用的 new Promise(function(resolve, reject){ if (someCondition){ resolve(); } else { reject(); } }); 但是为了灵活性起见,我一直在做以下类似的事情来解决问题。 var outsideResolve; var outsideReject; new Promise(function(resolve, reject) { outsideResolve = resolve; outsideReject = reject; }); 然后 onClick = function(){ outsideResolve(); } 这可以正常工作,但是有更简单的方法吗?如果不是,这是个好习惯吗?

17
处理Promise.all中的错误
我有一系列要解决的承诺 Promise.all(arrayOfPromises); 我继续继续诺言链。看起来像这样 existingPromiseChain = existingPromiseChain.then(function() { var arrayOfPromises = state.routes.map(function(route){ return route.handler.promiseHandler(); }); return Promise.all(arrayOfPromises) }); existingPromiseChain = existingPromiseChain.then(function(arrayResolved) { // do stuff with my array of resolved promises, eventually ending with a res.send(); }); 我想添加一个catch语句来处理单个promise,以防万一出错,但是当我尝试时,Promise.all返回它发现的第一个错误(忽略其余的),然后我无法从其他promise中获取数据数组(没有错误)。 我尝试做类似.. existingPromiseChain = existingPromiseChain.then(function() { var arrayOfPromises = state.routes.map(function(route){ return route.handler.promiseHandler() .then(function(data) { …

6
早日解决/拒绝后是否需要返回?
假设我有以下代码。 function divide(numerator, denominator) { return new Promise((resolve, reject) => { if(denominator === 0){ reject("Cannot divide by 0"); return; //superfluous? } resolve(numerator / denominator); }); } 如果我的目的是使用reject提早退房,那么我是否也应该养成return事后立即饮食的习惯?

6
什么是未处理的承诺拒绝?
为了学习Angular 2,我正在尝试他们的教程。 我收到这样的错误: (node:4796) UnhandledPromiseRejectionWarning: Unhandled promise rejection (r ejection id: 1): Error: spawn cmd ENOENT [1] (node:4796) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node. js process with a non-zero exit code. 我在SO中经历了不同的问题和答案,但找不到“未处理的承诺拒绝”是什么。 谁能简单地解释一下我的意思,它又是什么Error: spawn cmd ENOENT,什么时候出现,以及为了消除该警告我必须检查的内容?

3
Promise.all:已解析值的顺序
查看MDN看起来像values传递给then()Promise 的回调。all包含按promise顺序的值。例如: var somePromises = [1, 2, 3, 4, 5].map(Promise.resolve); return Promise.all(somePromises).then(function(results) { console.log(results) // is [1, 2, 3, 4, 5] the guaranteed result? }); 谁能引用规范说明values应该遵循的顺序? PS:运行这样的代码表明这似乎是对的,尽管这当然没有证据-可能是巧合。


13
Node.js本机Promise.all是并行还是顺序处理?
我想澄清这一点,因为文档对此不太清楚。 问题1:是Promise.all(iterable)按顺序还是并行处理所有承诺?或者,更具体地说,它相当于运行像 p1.then(p2).then(p3).then(p4).then(p5).... 或者是一些其他类型的算法的所有p1,p2,p3,p4,p5,等是被称为在同一时间(并行)和结果尽快返回所有的决心(或一个不合格品)? 问题2:如果Promise.all并行运行,是否有方便的方法可以依次运行可迭代程序? 注意:我不想使用Q或Bluebird,而是要使用所有本机ES6规范。

8
Axios可以访问响应头字段
我正在使用React和Redux构建前端应用程序,并且正在使用axios来执行请求。我想访问响应标头中的所有字段。在我的浏览器中,我可以检查标题,并且可以看到所有需要的字段都存在(例如令牌,uid等),但是当我调用时 const request = axios.post(`${ROOT_URL}/auth/sign_in`, props); request.then((response)=>{ console.log(response.headers); }); 我得到 Object {content-type: "application/json; charset=utf-8", cache-control: "max-age=0, private, must-revalidate"} 在这里,您可以看到所有其他字段都在我的浏览器网络标签中。 最好的。

22
如何同步确定JavaScript Promise的状态?
我有一个纯JavaScript Promise(内置实现或poly-fill): var promise = new Promise(function (resolve, reject) { /* ... */ }); 根据规范,Promise可以是以下之一: “解决”和“解决” “解决”和“拒绝” “待定” 我有一个用例,希望同步查询Promise并确定: 承诺解决了吗? 如果是这样,承诺是否得到解决? 我知道我可以#then()用来安排Promise更改状态后异步执行的工作。我不是问怎么做。 这个问题特别是关于对Promise状态的同步询问。我该如何实现?

5
从Vuex操作返回承诺
最近,我开始将内容从jQ迁移到VueJS这样的结构化框架,我喜欢它! 从概念上讲,Vuex对我来说是一种范式转换,但是我有信心我知道现在的全部情况,并且完全可以理解!但是存在一些小的灰色区域,主要是从实现的角度来看。 我觉得这个设计很好,但是不知道它是否与单向数据流的Vuex 周期相矛盾。 基本上,从动作中返回一个promise(类似)对象是否被视为一种好习惯?我将它们视为异步包装程序,带有失败状态等,因此看起来很适合返回承诺。相反,变异器只是改变事物,是商店/模块中的纯结构。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.