当前位置: 首页 > 知识库问答 >
问题:

node.js:for循环中每次迭代结束时的回调函数

葛雨华
2023-03-14
 for(var j=0; j<elements.length; j++)
 {
   //do some database calls
 }
 for(var j=0; j<elements.length; j++)
 {
   (function() 
     {
      //do some database calls

     })(function(){
        console.log("Loop terminated");
       });
 }

共有1个答案

狄德泽
2023-03-14

如果您打算并行进行数据库调用:

 numCompletedCalls = 0
 for(var j=0; j<elements.length; j++)
 {
    callDatabase(function(results) {
       numCompletedCalls++;
       if (numCompletedCalls == elements.length)
          console.log("Done all calls!");

    });
 }

如果要保存所有结果,可以推入AllResults数组并检查其长度,而不是增加计数器。

如果您想要有顺序for循环,您需要有类似递归的模式(注意,它实际上不是递归)

 function iterateElements(elements, index, callback) 
 {
    if (index == elements.length)
       return callback();
    // do database call with element
    var ele = elements[index];
    callDatabase(function(results) {
       iterateElements(elements, index+1, callback);
    });
 }
 iterateElements(elements, 0, function() {
    console.log("Done all calls!");
 });
 类似资料:
  • 我正在做一些产生正确结果的事情。然而,从设计观点来看,这是错误的。 该程序的重点是列出一个数字的所有幂的结果,直到并包括用户定义的限制。 我有一个构造函数,它接受扫描器中的基和指数。然后是一种利用for循环计算每个指数的幂的方法。 现在,问题是我直接从这个方法打印每个循环迭代的结果。这超过了私有变量的点,它首先是无效的。 因此,我想定义一个getter方法,它将每个幂的结果返回给输出。我过去常常为

  • 我试图在PHP中的foreach循环的每次迭代之后进行回显。回声在全部完成之前不会呈现。我试过各种帖子的建议,但没有一个奏效。我的一些代码是: 有什么建议吗?谢了。

  • 我正在尝试获取一个

  • 在Django模板中,我想创建一个遍历列表的for循环。在循环过程中,我还希望能够使用循环的迭代次数。 例如,如果有4个元素,那么: 应打印以下内容: 我该怎么做呢?

  • 计分器(100分) Praveen正在学校找一份计算机科学教师的工作。他多次被不同的学校拒绝,但这次他决心得到这份工作。他去找圣玛丽学校的校长。 校长说他的学校有等级和学分制。有N个科目,每个科目都有一个学分 现在,如果有3个科目的学分分别为4、3和2,并且某个学生在这3个科目中的分数分别为a(负)、B和C,那么他的分数计算如下:总分=每个科目的分数和相应学分的乘积之和。 他希望Praveen通过

  • 考虑这个简单的C++函数来计算数组的前缀和: 它是4个融合的UOP1,这个CPU可以支持4个融合的OPs/周期。 有通过和携带的依赖链,每个都是一个循环,但是这些UOP可以到4个ALU端口中的任何一个,所以似乎不太可能冲突。融合的需要转到p6,这是一个更令人担忧的问题,但我只测量到p6的1.1 UOPS/迭代。这将解释每次迭代1.1个循环,但不是1.4个循环。如果我将循环展开2倍,端口压力会低得多