我想在挂钩之前在mocha中多次调用请求(2次)。是否有正确的程序/方式来调用它们。我目前的用法是这样的,我得错误完成()被调用了太多次。
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
});
答案 0 :(得分:1)
您需要等待所有请求,并且只有在完成后才调用。
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
});
当然,如果您需要更多它们,您应该使用数组或字典来跟踪状态,并检查循环。 (或者可能从集合中删除)。
或者,作为更好但更高级的解决方案,将两个请求都包装到promises数组中,转换为all
数组的承诺,并在结算时调用done
。