在JavaScript中排队 - 如何调用下一个函数

时间:2016-11-24 19:05:45

标签: javascript function events queue

我想写一个我可以在我的应用程序中反复使用的队列。我知道队列存在,但我:

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();
  };

0 个答案:

没有答案