1
我最近写了很多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);
}
}
从概念上讲,这应该贯穿每个项目,但它很直观地复杂。我觉得应该有一个更简单的方法来做到这一点。在接近这种问题时,有没有人有他们倾向于遵循的模式?
你可以通过'async#eachSeries'避免递归https://github.com/caolan/async#seriestasks-callback – hassansin