我在我的express node.js应用程序中使用了大量数据。在使用更多数据之前,我必须等待我的一个操作完成。
req.on('data', function(data) {
req.pause();
do_my_thing();
req.resume();
}
req.on('end', function() {
do_my_finish_thing();
}问题是,即使我暂停流,也会调用req.on('end',(){})。有没有办法暂停流,这样就不会发出on('end',(){})?
发布于 2014-10-09 06:05:40
你所拥有的应该是可以工作的,但是'do_my_thing函数将被异步执行,因此,它几乎是瞬间恢复的。
您可以在do_my_thing的回调中恢复流:
function do_my_thing(callback){
//do your thing
callback();
}
req.on('data', function(data) {
req.pause();
do_my_thing(function(){
req.resume();
});
}
req.on('end', function() {
do_my_finish_thing();
}发布于 2014-10-10 02:33:16
结果如下所示。对于改进的建议,我们非常感谢。
function do_my_thing(callback){
//do your thing
callback();
}
function do_my_finish_thing(){};
var is_processable = false;
req.on('data', function(data) {
req.pause();
is_processable = false;
do_my_thing(function(){
req.resume();
is_processable = true;
});
}
req.on('end', function() {
function doit() {
if (is_processable) {
do_my_finish_thing();
} else {
setTimeout(doit, 100);
}
}
doit();
}https://stackoverflow.com/questions/26267104
复制相似问题