Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的队列-如何调用下一个函数_Javascript_Function_Events_Queue - Fatal编程技术网

JavaScript中的队列-如何调用下一个函数

JavaScript中的队列-如何调用下一个函数,javascript,function,events,queue,Javascript,Function,Events,Queue,我想写一个可以在我的应用程序中反复使用的队列。我知道队列存在,但我: a) 我想试试这个吗 b) 想要完全控制代码吗 c) 我不想要一个图书馆来完成我认为看似简单的任务 到目前为止,我有一个数组来保存要处理的函数,我使用shift()和push()来管理数组内容 这是伟大的工作,除了我不希望我的队列自动处理下一个函数的所有时间。由于此队列可用于执行顺序非常重要的各种进程,因此我需要一种方法,仅在第一个函数完成时处理下一个函数。问题是我不知道“完成”的定义。我自己使用的一个例子是,假设一个用户将5

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

a) 我想试试这个吗

b) 想要完全控制代码吗

c) 我不想要一个图书馆来完成我认为看似简单的任务

到目前为止,我有一个数组来保存要处理的函数,我使用shift()和push()来管理数组内容

这是伟大的工作,除了我不希望我的队列自动处理下一个函数的所有时间。由于此队列可用于执行顺序非常重要的各种进程,因此我需要一种方法,仅在第一个函数完成时处理下一个函数。问题是我不知道“完成”的定义。我自己使用的一个例子是,假设一个用户将5张照片上传到我的应用程序,在上传下一张图像之前,用户需要单击一个按钮“确定”图像预览。当我想自动处理下一个函数时,我还想使用相同的队列

到目前为止,我有以下几点:


我不会说这是一项看似简单的任务。它可能变得非常复杂,这取决于你想要实现什么。不管怎样,我认为你在寻找类似于承诺体系的东西,不是吗?以某种方式控制流程的生命状态,以便您可以同步执行,对吗?我不会说这是一项看似简单的任务。它可能变得非常复杂,这取决于你想要实现什么。不管怎样,我认为你在寻找类似于承诺体系的东西,不是吗?以某种方式控制进程的生命状态,以便同步执行,对吗?
var q = [],
     processing;

function runNextFunction() {

    while (q.length) {

      if(!processing){
        processing = true;
        q.shift()();
      }

      processing = false;
    }
};

  function fillQueue(func) {
    q.push(func);
    runNextFunction();
  };