【问题标题】:NodeJS Call GET method within for loop using callbacksNodeJS使用回调在for循环中调用GET方法
【发布时间】:2017-02-27 14:13:16
【问题描述】:

我正在使用 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 

出现了很多。我很难理解我应该将回调放置在哪里以迭代地处理这种情况?

非常感谢任何帮助!

【问题讨论】:

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


【解决方案1】:

这很难协调。您可以尝试使用像 axios 这样使用 Promise 的 HTTP 请求库。然后,您可以使用Promise.all 来协调所有请求。

【讨论】:

    【解决方案2】:

    您可以在 for 中添加另一个 if 并返回,直到您到达最后一个元素:

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

    还有一个建议,尝试在 for 循环之外使用array.length,因为每个循环都会计算数组的长度以检查是否满足条件,因此每次都要遍历数组。 (我的回答没有改变)。只需在循环之前执行并执行var size = array.length

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多