我想写一个我可以在我的应用程序中反复使用的队列。我知道队列存在,但我:
a)想自己尝试一下
b)希望完全控制代码
c)不想要一个我认为看似简单的任务库。到目前为止,我有一个数组来保存我要处理的函数,我使用shift()和push()来管理数组内容。
除了我不希望我的队列一直自动处理下一个功能之外,这工作得非常好。因为这个队列可以用于执行顺序很重要的各种进程,所以我需要一种方法来只在第一个函数完成时处理下一个函数。问题是,我不知道什么定义"完成"。我自己一直在使用的一个例子就是让用户将5张照片上传到我的应用程序,然后在上传下一张图片之前,用户需要点击一个按钮来确定" OK"图像预览。当我想自动处理下一个函数时,我也想使用相同的队列。
到目前为止,我有以下内容:
https://jsfiddle.net/21bc4ezu/
var q = [],
processing;
function runNextFunction() {
while (q.length) {
if(!processing){
processing = true;
q.shift()();
}
processing = false;
}
};
function fillQueue(func) {
q.push(func);
runNextFunction();
};