【问题标题】:How to call (NPM) request multiple times in mocha before hook?如何在钩子之前在 mocha 中多次调用(NPM)请求?
【发布时间】:2015-11-10 14:15:37
【问题描述】:

我想在钩子之前在 mocha 中多次(2 次)调用请求。是否有正确的程序/方式来调用它们。我目前的用法是这样的,我得到错误 done() 调用太多次。

describe('...', function(){
  before(function(done){
    request({
       ...
    }, function(err,res,body){
       ...
       done(); //also tried by removing it.
    });

    //request 2
    request({
       ...
    }, function(err,res,body){
       ...
       done();
    });
  });
  //it block follows
});

【问题讨论】:

    标签: javascript npm mocha.js npm-request


    【解决方案1】:

    您需要等待所有请求,并且只有在它们都完成时才调用 done。

    var requestAComplete = false, requestBComplete = false;
    
    function checkDone() {
        if (requestAComplete && requestBComplete) {
            done();
        }
    }
    
    describe('...', function(){
      before(function(done){
        request({ ... }, function(err,res,body){
           ...
           requestAComplete = true;
           checkDone();
        });
    
        //request 2
        request({ ... }, function(err,res,body){
           requestBComplete = true;
           checkDone();
        });
      });
      //it block follows
    });
    

    当然,如果您需要更多它们,您应该使用数组或字典来跟踪状态,并使用循环进行检查。 (或者可能从集合中删除)。

    或者,作为一种更好但更高级的解决方案,将两个请求包装到 Promise 数组中,使用 all 转换为数组的 Promise 并在解决时调用 done

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2021-02-09
      • 2023-03-08
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多