Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs异步';有段时间了_Node.js_Asynchronous_Asynccallback - Fatal编程技术网

Node.js nodejs异步';有段时间了

Node.js nodejs异步';有段时间了,node.js,asynchronous,asynccallback,Node.js,Asynchronous,Asynccallback,欢迎大家, 我希望重复调用函数,但希望每次调用仅在前一次调用完成时运行。异步的while是否符合我的需要?或者这些电话是并行的吗 谢谢 Gary在执行您需要的操作的同时,它会连续运行每个函数。在每次运行之前,它将执行“测试”功能,以确保再次运行 他们的例子是: var count = 0; async.whilst( function () { return count < 5; }, function (callback) { count++;

欢迎大家,

我希望重复调用函数,但希望每次调用仅在前一次调用完成时运行。异步的while是否符合我的需要?或者这些电话是并行的吗

谢谢


Gary

在执行您需要的操作的同时,它会连续运行每个函数。在每次运行之前,它将执行“测试”功能,以确保再次运行

他们的例子是:

var count = 0;

async.whilst(
    function () { return count < 5; },
    function (callback) {
        count++;
        setTimeout(callback, 1000);
    },
    function (err) {
        // 5 seconds have passed
    }
);
var计数=0;
异步的(
函数(){返回计数<5;},
函数(回调){
计数++;
setTimeout(回调,1000);
},
功能(err){
//5秒钟过去了
}
);
,异步的将完成这项工作

你可能想考虑异步的(同时的倒数)。两者的工作相同,但关键区别在于:

  • async。而
    将在每次测试通过时调用该函数
  • async.until将在每次测试失败时调用该函数

    • 异步的while应该可以帮你解决这个问题。在参考已接受答案上的代码之前,请注意您将使用的async版本。正如公认答案中的一条评论所表明的那样,这个循环的结构发生了轻微的变化,这可能不太容易发现

      异步v2:

      异步v3:

      他们的例子是:

      var count = 0;
      async.whilst(
          function test(cb) { cb(null, count < 5); },
          function iter(callback) {
              count++;
              setTimeout(function() {
                  callback(null, count);
              }, 1000);
          },
          function (err, n) {
              // 5 seconds have passed, n = 5
          }
      );
      
      var计数=0;
      异步的(
      函数测试(cb){cb(null,计数<5);},
      函数iter(回调){
      计数++;
      setTimeout(函数(){
      回调(null,count);
      }, 1000);
      },
      函数(err,n){
      //5秒过去了,n=5
      }
      );
      
      此示例的结构已更改,请查看文档