node.js - 与 Node 并行运行循环

标签 node.js

我有一个像这样的数组:

var subscriptions = ['sub_1234', 'sub_5678', 'sub_8493'];

在我的实际应用程序中,数组通常有大约 800 个订阅 ID。

目前我有一个这样的循环:

var subscriptionData = [];
for(var i in subscriptions) {
  subscriptionID = subscriptions[i];
  var data = await stripe.subscriptions.retrieve(subscriptionID);
  subscriptionData.push(data);
}

循环的目的是推断订阅 ID,以找出与该 ID 相关的所有信息(付款金额、发票等)

问题在于,如果有 600 个订阅,可能需要 20-30 分钟才能浏览完所有数据。

是否可以并行运行 for 循环,以便一次拉取所有 strip 订阅并将数据推送到数组上?然后继续?

我正在查看这个库:https://github.com/caolan/async

但是如果您不知道数组有多长(数组可以是可变长度),我无法弄清楚如何让它做到这一点

最佳答案

const subscriptions = ['sub_1234', 'sub_5678', 'sub_8493'];


async function customFunction(subscriptions) {

  const getSubscription = subscriptions.map((item) => {
    return stripe.subscriptions.retrieve(item);
  });

  const subscriptionData = await Promise.all(getSubscription);

  return subscriptionData; // returns an array
};


// call the function and pass parameter value

customFunction(subscriptions);

关于node.js - 与 Node 并行运行循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52264370/

相关文章:

node.js - 如何在nodejs中异步require

Heroku 上的 Node.js 有 2 个端口

node.js - 安装 NPM 包后将文件移至根目录

mysql - API请求后 Node 服务器不返回任何响应

javascript - 如何使用 azure 函数和 cosmos Node sdk 检查 cosmosDB 中的项目是否已过期?

javascript - 使用 Node.js 构建静态站点的最佳方式(或包)是什么?

node.js - HAProxy + Nodejs + SockJS + Express + SSL

node.js - Windows 上的 nodejs 和 websocket

node.js - TypeError : include. model.getTableName 不是函数

node.js - npm 警告没有存储库字段