res.end() 是否结束了 async.waterfall
Does res.end() ends async.waterfall?
我有这个代码:
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();
异步会结束还是会永远等待使用计算机资源的回调?如果是,如何解决这个问题,因为我在我的代码和它的方式中都有它,对我来说非常清楚,我认为任何不同的东西都会令人困惑。
异步会结束还是会永远等待使用计算机资源的回调?
是的,在您的中间工作线程函数中,当 something
为 true 时,您永远不会调用回调。在这种情况下,将发送响应,但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
。
相关文章:
- 超过了async.detect最大调用堆栈大小
- 确定在核心转换结束中完成了哪个核心转换
- 咽表结束得太早了
- 两个精灵相撞 - 一个后端结束了另一个
- 等待函数结束(在 async.series 中)无法按预期工作
- this.async() 在 JavaScript 中做了什么
- res.end() 是否结束了 async.waterfall
- 为什么在javascript中将数组转换为JSON时添加了开始和结束
- 检测触摸开始/触摸结束是否取消了滚动(动量滚动)
- 是承诺和结束消耗了我所有的记忆
- 混合了sync和async javascript/jquery,并在最后获得了一个成功函数
- Javascript-JSON.parse:数据意外结束-使用有效JSON时出错.我做错了什么
- heroku上的后台工作网络是如何知道的's结束了
- iOS 8.0中断了外部JavaScripts的async关键字
- 伊斯坦布尔为我提供了覆盖,但以错误结束输出
- 等待async函数结束
- 什么结束了模态
- Kinect (One)在浏览器中,结束了NPAPI
- 添加了insertBefore (async=false)的脚本接下来会加载吗?
- jquery .html()结束后,绑定就不能工作了