首页 > 解决方案 > 循环遍历数组和 POST API 调用

问题描述

我想循环遍历我的数组并每次发布 API 调用,以便为数组中的每个值创建一条新记录。

下面的示例将进行 3 次单独调用并返回 3 条新记录,但我无法让它工作,有人可以建议这是否是最好的方法吗?

var tens = "boo, foo, bar";
var letters = tens.split(',').map(string=>string.trim());

const apiCalls = callAPIs(letters);

function callAPIs(letters) {
  responses = [];
  letters.forEach(group => {
   var apiRequest = http.request({
    'endpoint': 'site',
    'path':'/api/v1/table/incident', 
    'method': 'POST',
    "headers": {
    "Authorization": "Basic xxxxxxxxxxxxx=",
    "Content-Type": "application/json"
    }
    })
    apiRequest.write(group)
    apiRequest.end((data) => {
      responses.push(data)
    });
  });
  return responses
  console.log(responses)
}
var data = {};
var caller_id = "user1";
data.caller_id = caller_id;

标签: node.jsecmascript-6

解决方案


forEach首先,您需要了解js不是承诺意识。您必须使用旧学校for循环或一些可迭代的for...in

async function callAPIs(letters) {
        responses = [];
        for (const i = 0; i < letters.length; i++) {
            var apiRequest = await http.request({
                'endpoint': 'site',
                'path': '/api/v1/table/incident',
                'method': 'POST',
                "headers": {
                    "Authorization": "Basic xxxxxxxxxxxxx=",
                    "Content-Type": "application/json"
                }
            })
            apiRequest.write(group)
            apiRequest.end((data) => {
                responses.push(data)
            });
        });
    return responses
    console.log(responses)
    }

推荐阅读