我编写了自己的队列库来做到这一点(我将在这些日子里发布它),基本上将查询推送到队列(基本上是一个数组)上执行每个被删除的查询,当数组为空时发生回调。
不需要太多。
*编辑。我已经添加了这个示例代码。这不是我以前使用过的,也没有在实践中尝试过,但它应该给你一个起点。你可以用这个模式做更多的事情。
需要注意的一件事。排队有效地使您的操作同步,它们一个接一个地发生。我编写了我的 mysql 队列脚本,因此我可以在多个表上异步执行查询,但在任何一个表上同步执行,以便插入和选择按照请求的顺序发生。
var queue = function() {
this.queue = [];
/**
* Allows you to pass a callback to run, which is executed at the end
* This example uses a pattern where errors are returned from the
* functions added to the queue and then are passed to the callback
* for handling.
*/
this.run = function(callback){
var i = 0;
var errors = [];
while (this.queue.length > 0) {
errors[errors.length] = this.queue[i]();
delete this.queue[i];
i++;
}
callback(errors);
}
this.addToQueue = function(callback){
this.queue[this.queue.length] = callback;
}
}
采用:
var q = new queue();
q.addToQueue(function(){
setTimeout(function(){alert('1');}, 100);
});
q.addToQueue(function(){
setTimeout(function(){alert('2');}, 50);
});
q.run();