Javascript循环数组并为数组中的每个值调用API

use*_*169 1 javascript arrays

哪个 JavaScript 循环最适合下面的循环?

我想为数组中的每个值进行 API 调用。值的数量可能比下面显示的更多。我已经查看了循环类型以及所有承诺,我很困惑该做什么示例

//    API Call 1. ABC
//    API Call 2. DEF
//    API Call 3. GHI
//    API Call ....

// Input format example [ABC, DEF, GHI, ... ...]
    
    var alp = "ABC, DEF, GHI";
    var letters = alp.split(',');
    var array = [letters];

    
    // API Request
    
    var apiRequest = http.request({
        'endpoint': 'site',
        'path':'/api/test/table/records', 
        'method': 'POST',
        "headers": {
        "Authorization": "Basic xxxxxxxxxxx=",
        "Content-Type": "application/json"
    
        }
    
    });
    
    
    var data = {};
    
    var dept = {};
    
    // Switch naming
    
    switch (letters[0]) {
    
        case 'ABC':
            site = "A B.C";
            break;
        case 'DEF':
            site = "D E.F";
            break;
        case 'GHI':
            site = "G H.I";
            break;
    }
    
    var u_department = dept;
    data.u_department = u_department;
    
    var apiResponse = apiRequest.write(data);
Run Code Online (Sandbox Code Playgroud)

我该把这个部分放在哪里

var data = {};
var site = {};

   switch (letters[0]) {
    
        case 'ABC':
            site = "A B.C";
            break;
        case 'DEF':
            site = "D E.F";
            break;
        case 'GHI':
            site = "G H.I";
            break;
    }
var u_department = site;
data.u_department = u_department;
var apiResponse = apiRequest.write(data);
Run Code Online (Sandbox Code Playgroud)

Pra*_*ali 5

最好和最简单的方法是使用for循环并将每个承诺存储在数组中。循环完成后,您可以Promise.all(promiseArray)根据已解决/拒绝的承诺执行操作。

let promiseArray = [];
for(let i=0;i<data.length;i++){
   var apiRequest = http.request({
       ....
     }
    });
   promiseArray.push(apiRequest)
}

Promise.all(promiseArray)
.then(fn)
.catch(fn)
Run Code Online (Sandbox Code Playgroud)

您可以阅读更多有关Promise.all([])

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

这是一个使用JSONPlaceholder API 的小示例

let promiseArray = [];
for(let i=0;i<data.length;i++){
   var apiRequest = http.request({
       ....
     }
    });
   promiseArray.push(apiRequest)
}

Promise.all(promiseArray)
.then(fn)
.catch(fn)
Run Code Online (Sandbox Code Playgroud)