2016-03-15 32 views
-1

我需要對多個REST API使用幾個調用,收集所有結果,按摩它們並將它們放入csv中。異步瀑布和調用Node.js中的API

呼叫API A和添加到陣列d

呼叫API B和添加到陣列d

呼叫API℃並加入到陣列d

使從陣列d一個csv

我一直在嘗試使用異步瀑布,但我希望爲此得到適當的格式。

謝謝你的時間!

+2

這個網站的工作方式是,你告訴我們你試過的代碼,並解釋你卡在哪裏。這個網站的工作方式,更好的是一個具體的實施,而不是理論。此外,解決這類問題的現代技術也是有保證的,所以最好不要假定異步庫是最好的解決方案。再次向我們展示您的代碼。向我們展示您所調用的API。向我們展示你想要達到的結果。我們還需要知道您的三個API調用是否取決於之前的調用結果,或者它們是否都是不相關的。 – jfriend00

+0

正確的格式?那是什麼意思?此外,顯示你寫的代碼,以便人們可以幫助實施? –

+0

由於看起來你可能在這裏是新的,請閱讀[如何問一個關於堆棧溢出的好問題](http://stackoverflow.com/help/how-to-ask)。您收到的降價是因爲您的問題目前不被視爲一個好問題,但您可以使用「編輯」鏈接進行修復。 – jfriend00

回答

2

從您提出要求的方式看來,您似乎並不需要瀑布。似乎你可以做async.parallel。

var D = []; 

async.parallel({ 
    A: function (callback) { 
    callApiA(callback); 
    }, 
    B: function (callback) { 
    callApiB(callback); 
    }, 
    C: function (callback) { 
    callApiC(callback); 
    } 
}, function (err, results) { 
    if (err) return console.error(err); 
    D.push(results.A, results.B, results.C); 
}); 

通過利用並行API調用可以同時發生,以提高性能。現在,如果您的API B調用只能使用API​​ A的結果,那麼是的,您需要異步的瀑布而不是並行,但是您沒有指定,所以這似乎是您的有效選擇。

4
var D = []; 
async.waterfall([ 
function(callback) { 
    //make request to API A and push result to var D 
    callback(err, D.push(result_from_the_call)); //err is the API call error 
}, 
function(D, callback) { 
    //make request to API B and push result to var D 
    callback(err, D.push(result_from_the_call));//err is the API call error 
}, 
function(D, callback) { 
    //make request to API C and push result to var D 
    callback(err, D.push(result_from_the_call));//err is the API call error 
} 
], function (err, result) { 
    /result has the array with all the data you will get from api call 
});