我有这个代码:
async.waterfall([
function (callback){
//some work
},
function (callback){
if(something)
res.status(200).send('Some message').end();
else
callback(null);
},
function (callback){
//some work
}
], function(err){
//Do something here...
});
我想知道我是否可以做到这一点:
res.status(200).send('Some message').end();
异步会结束还是会永远等待使用计算机资源的回调?如果是,如何解决这个问题,因为我的代码中都有它,而且它的方式对我来说非常清楚,任何不同的东西我认为都会令人困惑。
最佳答案
Will async ends or it will be waiting forever for a callback using resources from the machine?
是的,在您的中间工作函数中,当 something
为 true 时,您不会调用回调。在这种情况下,将发送响应,但 waterfall
将永远不会完成。您可以通过调用带有仅意味着“短路”的良性错误的回调来终止 waterfall ,或者您可以使用也意味着短路的成功值来调用它(可能更清楚)。
async.waterfall([
function (callback){
//some work
},
function (callback){
if(something)
res.status(200).send('Some message').end();
callback(null, true); //true means "short circuit"
else
callback(null);
},
function (shortCircuit, callback){
if (shortCirtcuit) {
callback(null, true);
return;
}
//some work
}
], function(err){
//Do something here...
});
<小时/>
- 旁注:
res.send('Some message');
会做到的。 200 是默认状态,send
意味着end
。
关于javascript - res.end() 是否结束 async.waterfall?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27676936/