NodeJS使用回调在for循环内调用GET方法

时间:2017-02-27 14:13:16

标签: javascript node.js express for-loop callback

我正在使用NodeJS和Express并迭代一串字符串,例如:

compile 'com.google.android.gms:play-services:10.2.0'
compile 'com.google.firebase:firebase-database:10.2.0'

如果字符串包含字母,则该函数应该关闭并调用GET方法从数据库中检索值。到目前为止我的代码看起来像这样:

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

我的问题是,获取值的方法比处理线程需要更长的时间,导致

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

出现了很多。我正在努力理解我应该在哪里放置我的回调来迭代地处理这种情况?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

协调很棘手。您可以尝试使用使用promises的axios之类的HTTP请求库。然后,您可以使用Promise.all来协调所有请求。

答案 1 :(得分:0)

你可以在for中添加另一个并返回到最后一个元素:

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