簡體   English   中英

Javascript 循環遍歷數組並為數組中的每個值調用 API

[英]Javascript Loop through array and make call API for each value in array

哪個 javascript 循環最適合以下情況?

我想讓 API 調用數組中的每個值。 值可能比下面顯示的更多。 我已經查看了循環類型以及 promise 全部,我很困惑該做什么示例

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

我在哪里放置這個部分

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

最好和最簡單的方法是使用for循環並將每個 promise 存儲在一個數組中。 循環完成后,您可以使用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)

你可以閱讀更多關於Promise.all([])

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

這是一個使用JSONPlaceholder API的小例子

 const todos = [1,2,3,4,5]; let promiseArray = []; for(let i=0;i<todos.length;i++){ promiseArray.push(fetch('https://jsonplaceholder.typicode.com/todos/'+todos[i])) } Promise.all(promiseArray).then(values=>values.map(value=>console.log(value.url+" ==> "+value.status))).catch(err=>console.log(err))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM