node.js - 与 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
但是如果你不知道数组有多长(数组可以是可变长度),我无法弄清楚如何让它做到这一点
解决方案
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);
推荐阅读
- mapbox - 在 Mapbox 中,使用 setStyle 时如何保留图层?
- dynamics-crm - 使用 Simple.odata.client 库检索 CRM OptionSet 字段
- c# - 如何对存储过程的结果进行排序并返回js?
- python - 使用 Anaconda 编译器在 Anaconda 中从源代码构建 Scipy
- javascript - 在 JS 函数中使用递归的奇怪循环
- php - Laravel 5.3 中的 Listar 存档
- css - 网页源似乎链接到不同的 CSS 样式表
- python - Python - 模块没有属性
- javascript - jQuery Left 属性在动画中不起作用
- javascript - 处理重复的元素并将它们推送到 Javascript 或 Jquery 中的数组中