Questions tagged «promise»

承诺是延迟计算的一种策略,适用于多种并发样式:用于本地计算的线程和事件循环并发,以及同步和异步远程消息传递。一个promise表示异步操作的最终结果。处理承诺的主要方式是通过注册从承诺的最终值或失败原因到新承诺的转换的方法。


27
解决承诺一个接一个(即按顺序)?
考虑以下以串行/顺序方式读取文件数组的代码。readFiles返回一个promise,仅当依次读取所有文件后,promise才会解析。 var readFile = function(file) { ... // Returns a promise. }; var readFiles = function(files) { return new Promise((resolve, reject) => var readSequential = function(index) { if (index >= files.length) { resolve(); } else { readFile(files[index]).then(function() { readSequential(index + 1); }).catch(reject); } }; readSequential(0); // Start! }); }; 上面的代码可以工作,但是我不喜欢必须递归使事情顺序发生。有没有更简单的方法可以重写此代码,这样我就不必使用怪异的代码了readSequential函数了? …

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事后立即饮食的习惯?

1
现在我们有了ES6承诺,还有理由使用Q或BlueBird这样的承诺库吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 在Node.js添加对Promise的本机支持之后,还有理由使用Q或BlueBird之类的库吗? 例如,如果您正在启动一个新项目,并假设在该项目中您没有使用这些库的任何依赖项,那么我们是否可以说没有更多理由使用这些库了?


7
.then(成功,失败)什么时候被视为承诺的反模式?
我看了蓝鸟诺言常见问题解答,其中提到这.then(success, fail)是一种反模式。我对试捕一无所知。以下是什么问题? some_promise_call() .then(function(res) { logger.log(res) }, function(err) { logger.log(err) }) 该示例似乎建议以下是正确的方法。 some_promise_call() .then(function(res) { logger.log(res) }) .catch(function(err) { logger.log(err) }) 有什么不同?

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:运行这样的代码表明这似乎是对的,尽管这当然没有证据-可能是巧合。

5
我如何保证原生XHR?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我想在我的前端应用程序中使用(本机)promise来执行XHR请求,但没有大型框架的所有傻子行为。 我希望我的XHR返回的希望,但是,这并不工作(给我:Uncaught TypeError: Promise resolver undefined is not a function) function makeXHRRequest (method, url, done) { var xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.onload = function() { return new Promise().resolve(); }; xhr.onerror = function() { return new Promise().reject(); }; xhr.send(); } makeXHRRequest('GET', 'http://example.com') .then(function (datums) { console.log(datums); });

6
Angular HttpPromise:`success` /`error`方法和`then`的参数之间的区别
根据AngularJS doc,调用$http返回以下内容: 返回带有标准then方法和两个http特定方法的promise对象:success和error。所述然后方法有两个参数一成功以及错误回调将与响应对象被调用。的成功和错误的方法采取一个参数-一当请求成功或失败分别将被调用的函数。传递给这些函数的参数是传递给then方法的响应对象的结构化表示。 除了response在一种情况下对象被破坏的事实之外,我没有得到 成功/错误回调作为参数传递 promise.then 回调作为promise 的promise.success/ promise.error方法的参数传递 有没有?传递看似相同的回调的这两种不同方式的意义何在?
177 angularjs  promise 

3
如何在Node.js UnhandledPromiseRejectionWarning中查找未处理的承诺?
版本7中的Node.js具有用于处理promise的async / await语法糖,现在在我的代码中经常出现以下警告: (node:11057) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReferenceError: Error: Can't set headers after they are sent. (node:11057) 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. 不幸的是,没有提到丢失渔获物的那一行。有没有找到所有方法而不检查每个try / catch块的方法?

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规范。

5
对Array.map使用异步等待
给出以下代码: var arr = [1,2,3,4,5]; var results: number[] = await arr.map(async (item): Promise<number> => { await callAsynchronousOperation(item); return item + 1; }); 产生以下错误: TS2322:类型'Promise <number> []'无法分配给类型'number []'。类型“ Promise <数字>”不可分配给类型“数字”。 我该如何解决?怎样才能让async await和Array.map一起工作?

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

4
在返回函数变量之前,如何等待诺言完成?
我仍在努力兑现承诺,但是由于这里的社区而取得了一些进展。 我有一个简单的JS函数,用于查询Parse数据库。它应该返回结果数组,但是显然由于查询的异步性质(因此,promise),该函数在结果之前返回,给我留下了未定义的数组。 我需要怎么做才能使此功能等待promise的结果? 这是我的代码: function resultsByName(name) { var Card = Parse.Object.extend("Card"); var query = new Parse.Query(Card); query.equalTo("name", name.toString()); var resultsArray = []; var promise = query.find({ success: function(results) { // results is an array of Parse.Object. console.log(results); //resultsArray = results; return results; }, error: function(error) { // error is an …

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.