Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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_Promise_Queue - Fatal编程技术网

Javascript 承诺队列处理无序

Javascript 承诺队列处理无序,javascript,promise,queue,Javascript,Promise,Queue,我正在试验我认为是的一个基本用例 输出结果: >start 1 >start 2 >finished processing 第二项在第一项完成之前开始。我错过了什么 如果更改,请尝试此代码示例 let queue = new Queue(); 使用并发参数的步骤 let queue = new Queue(1); 然后,您的代码按预期工作 可能在承诺队列中有一个>1的默认并发 查看,默认值为无限并发承诺 您注意到了callstack和queue的作用,这使JavaScri

我正在试验我认为是的一个基本用例

输出结果:

>start 1
>start 2
>finished processing
第二项在第一项完成之前开始。我错过了什么

如果更改,请尝试此代码示例

let queue = new Queue();
使用并发参数的步骤

let queue = new Queue(1);
然后,您的代码按预期工作

可能在承诺队列中有一个>1的默认并发

查看,默认值为
无限
并发承诺


您注意到了callstack和queue的作用,这使JavaScript非常特殊。您的代码在大约20毫秒内执行整个文件。JS解释程序点击第5行并记录1,然后将承诺加载到队列中,然后立即执行“开始2”,然后在5秒钟后,承诺得到解决。我正在查看您的代码,但我不知道promise queue是如何工作的,以便正确地解释您“应该做什么”。也许可以尝试将其添加到代码的顶部,因为它可能允许两者同时运行:
const maxConcurrent=1;const maxQueue=1;const queue=新队列(maxConcurrent,maxQueue)@agm1984谢谢你修复了它。在源代码中,该ctor变量实际上被命名为
maxPendingPromises
,这令人困惑。我无法理解为什么这默认为
无限
而不是简单的
1
。该库称为Queue,它有一个名为
add
的方法,该方法将函数作为参数,但默认情况下并发执行这些函数回调??wtf@agm1984我确信你的第一个评论是不准确的。你能解释一下,拥有一个拥有无限多并发承诺的“队列”的目的是什么吗?i、 这种队列的实际用途是什么?我不知道为什么默认值会如此违反直觉
let queue = new Queue(1);