javascript - 产生依赖于递归 promise 的 promise

标签 javascript angularjs asynchronous promise q

我有一个整数 id 数组,例如

var a=[1,2,3,4,5]

并且我需要对这些 ID 中的每一个执行异步远程调用。每次调用都是使用 $resource 执行并作为 promise 呈现的 WebAPI 请求。

我需要创建一个函数来获取这些 ID 的数组,然后初始化递归 promise 链。该链应该导致对每个 ID 的相应 webapi 调用,一个接一个。这些调用不应该是并行的,而是链接的。

有问题的函数本身返回一个“主要” promise ,应根据异步网络调用的结果解决或拒绝该 promise 。也就是说,如果递归中的某些 promise 由于与服务器断开连接而被拒绝,则主要 promise 也应该失败。在正常情况下,“主要” promise 必须在所有请求完成时解决。

我怎样才能在 angularjs 中完成它?

最佳答案

您对数组使用 reduce 将 promise 链接在一起。没有必要使这个递归。

// for angularjs: var Q = $q.when;
var p = a.reduce(function(prev, el) {
    return prev.then(function(arr) {
        return makeRequest(el).then(function(res) {
             return arr.concat([res]);
         });
    });
}, Q([]));

关于javascript - 产生依赖于递归 promise 的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23650204/

相关文章:

javascript - 如何让jquery检测某个元素内的html元素?

javascript - PreventDefault ,返回 false 不起作用

javascript - 如何修复这个IE6输入错误

angularjs - 通过 PayPal API 将应用程序购物车与 PayPal 集成

node.js - 将 async.js 与 node.js 流一起使用

javascript - Cypress 如何检查 div 中的背景是否发生变化

angularjs - 在 AngularJS 中通过 URL 传递变量

javascript - 动态重定向到主视图中的 div 中的另一个 View

java - 如何将 Mono 变成真正的异步(非响应式!)方法调用?

javascript - 在 React 中调用 Promise 内的异步函数