【问题标题】:Promise.all processes the promises in a group of 6 at each time [duplicate]Promise.all 每次处理一组 6 个 Promise [重复]
【发布时间】:2017-04-24 04:01:14
【问题描述】:

我想同时发出一堆(比如说 20 个)HTTP POST 请求(以便将应用程序的信息发送到一些 HTTP 服务器)。

我正在使用 http 角度服务来返回一个承诺:

function deployPromise(server, app){
  return $http({
    method: 'POST',
    url: server.url,
    data: app
  });
}

对于同时部署,我使用 Promise.all 来获取 deployPromises 数组:

function deploy(servers, app){
  Promise.all(servers.map(function(server){
    return deployPromise(server, app);
  }));
}

最后我用可用服务器数组和应用程序信息调用 deploy 函数:

deploy(servers, app);

令我惊讶的是,不是一次执行所有请求,而是以 6 个一组的形式发送请求(换句话说,deployPromises 被解析)。我的意思是,当前 6 个调用完成后,然后将处理后 6 个调用,依此类推。

你们有什么想法吗?

【问题讨论】:

  • 如果你改用$q.all也一样?
  • 如果浏览器不限制每个主机的连接,那么一切都会崩溃。
  • 当然,但我仍然希望 Promise 可以同时并行完成,尽管被批量调用。
  • @JaromandaX 不能同时完成,而是推迟到 Promise.all 之前全部完成
  • 是的。问题中没有迹象表明这没有发生

标签: javascript angularjs promise angular-http


【解决方案1】:

这是浏览器限制,您不能同时打开无限数量的连接。 Max parallel http connections in a browser?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-01
    • 2020-04-22
    • 2021-01-23
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 2019-05-02
    相关资源
    最近更新 更多