首页 > 解决方案 > 与 Node 并行运行一个循环

问题描述

我有一个这样的数组:

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 循环,以便一次提取所有条带订阅并将数据推送到数组中?然后继续?

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

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

标签: node.js

解决方案


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);

推荐阅读