我最近写了很多NodeJS,这迫使我从不同的角度来解决一些问题。我想知道在异步请求环境中为顺序(而不是并行)处理数据块的问题开发了哪些模式,但我还没有找到任何直接相关的东西。
总结一下问题:
在这个领域工作,我提出的最简单的模式是递归模式。像
这样的东西function processData(data, start, step, callback){
if(start < data.length){
var chunk = data.split(start, step);
queryService(chunk, start, step, function(e, d){
//Assume no errors
//Could possibly do some matching between d and 'data' here to
//Update data with anything that the service may have returned
processData(data, start+step, step, callback);
});
}
else{
callback(data);
}
}
从概念上讲,这应该逐步完成每个项目,但它直观复杂。我觉得应该有一个更简单的方法来做到这一点。在接近这类问题时,有没有人有他们倾向于遵循的模式?
答案 0 :(得分:0)
我的第一个思考过程是依赖于对象封装。创建一个对象,其中包含有关需要处理的内容的所有信息以及有关已处理和正在处理的内容的所有相关数据,并且回调函数将仅调用“下一步”&#39;对象的函数,它将依次开始处理下一个数据并更新对象。基本上像n异步for循环一样工作。