首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >等待aws lambda函数中的forEach循环

等待aws lambda函数中的forEach循环
EN

Stack Overflow用户
提问于 2019-05-19 19:51:24
回答 1查看 1.5K关注 0票数 2

在aws lambda中执行返回语句之前,我如何等待forEach循环完成?

module.exports.shipments = async (event) => {
    const axios = require("axios");
    let data = JSON.parse(event.body);
    let url = data.apiURL + "/api/1.1/wf/bulkshipments/initialize";
    let patchURL = data.apiURL + "/api/1.1/obj/company/" + data.companyID;

    data.shipments.forEach((item, index, array) => {
        axios.post(url,{
        batchID: data.batchID,
        companyID: data.companyID,
        shipment: item})
    });

    return {
      statusCode: 200,
      body: JSON.stringify({
        message: 'Created successfully!',
        totalShipments: data.shipments.length,
      }, null, 2),
    };
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-19 19:54:58

您已经在使用异步,所以使用map返回一个promises列表,并使用Promise.all()等待它们

module.exports.shipments = async (event) => {
    const axios = require("axios");
    let data = JSON.parse(event.body);
    let url = data.apiURL + "/api/1.1/wf/bulkshipments/initialize";
    let patchURL = data.apiURL + "/api/1.1/obj/company/" + data.companyID;

    let promises = data.shipments.map(item =>
        axios.post(url, {
            batchID: data.batchID,
            companyID: data.companyID,
            shipment: item})
        })
    );

    await Promise.all(promises);

    return {
      statusCode: 200,
      body: JSON.stringify({
        message: 'Created successfully!',
        totalShipments: data.shipments.length,
      }, null, 2),
    };
};

要让每个调用都等待,而不是同时触发所有post请求,请使用for...of loop

module.exports.shipments = async (event) => {
    const axios = require("axios");
    let data = JSON.parse(event.body);
    let url = data.apiURL + "/api/1.1/wf/bulkshipments/initialize";
    let patchURL = data.apiURL + "/api/1.1/obj/company/" + data.companyID;

    for (let item of data.shipments) {
        await axios.post(url, {
            batchID: data.batchID,
            companyID: data.companyID,
            shipment: item})
        });
    }

    await Promise.all(promises);

    return {
      statusCode: 200,
      body: JSON.stringify({
        message: 'Created successfully!',
        totalShipments: data.shipments.length,
      }, null, 2),
    };
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56207504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档