2017-02-27 24 views
0

循環GET方法,例如:的NodeJS調用中使用我使用的NodeJS和Express和遍歷字符串數組回調

[ "1" , "+" , "B4", "*", "8"] 

如果字符串包含一個字母,功能將會熄滅,通話一個GET方法從數據庫中檢索一個值。到目前爲止我的代碼看起來是這樣的:

function processFormula(formula) { 
    console.log(formula) 
    var arr = formula.split(" "); 
    for (var i = 0; i < arr.length; i++) { 
     if (arr[i].match(/[a-z]/i)) { 

     /* fetch the value and store it in arr[i] */ 

     } 
    return arr.toString(); 
    } 

我的問題是,它熄滅來獲取值的方法花費的時間比處理線程來執行,導致

undefined 

種植了很多。我正在努力瞭解我應該如何將我的回調反覆處理這種情況?

任何幫助,非常感謝!

+0

看看第一個問題在這裏開始:http://stackoverflow.com/questions/tagged/javascript?sort=frequent。關於循環,看看其中的一個:http://stackoverflow.com/search?q=%5Bjavascript%5D+asynchronous+loop –

+0

感謝Felix的幫助 –

回答

1

這很難協調。您可以嘗試使用使用promise的axios等HTTP請求庫。然後,您可以使用Promise.all來協調所有請求。

0

您可以添加其他如內並在最後一個元素返回,直到你:

for(var i = 0; i < arr.length; i++){ 
    if (arr[i].match(/[a-z]/i)) { 

    /* fetch the value and store it in arr[i] */ 

    } 
    if(i == arr.length-1){ 
      return arr.toString(); 
    } 
} 

和建議,可以嘗試使用array.length之外循環,因爲每個循環中,您將計算的長度數組來檢查條件是否達到,因此每次都要通過數組。 (我沒有改變我的答案)。只是在循環之前做,並做var size = array.length