Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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

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

Javascript异步循环

Javascript异步循环,javascript,loops,asynchronous,Javascript,Loops,Asynchronous,我仍然在思考Javascript的异步特性。请帮助我理解这一点:我有几个函数需要在数组中的项上运行 我们有选择1: for (f of files){ do_a(f); do_b(f); do_c(f); } 与备选方案2相比: for (f of files){ do_a(f); } for (f of files){ do_b(f); } for (f of files){ do_c(f); } 哪个更快 在选项1中,即使do_a仍在工作,do_b功能是否会启

我仍然在思考Javascript的异步特性。请帮助我理解这一点:我有几个函数需要在数组中的项上运行

我们有选择1:

for (f of files){
  do_a(f);
  do_b(f);
  do_c(f);
}
与备选方案2相比:

for (f of files){
  do_a(f);
}

for (f of files){
  do_b(f);
}

for (f of files){
  do_c(f);
}
  • 哪个更快
  • 在选项1中,即使do_a仍在工作,do_b功能是否会启动
  • 在选项2中,即使do_a循环仍在工作,do_b循环是否会启动
  • 现在还不清楚

  • 是,将调用该函数

  • 不,第一个循环将在第二个循环开始之前完成

  • 现在还不清楚

  • 是,将调用该函数

  • 不,第一个循环将在第二个循环开始之前完成

  • 哪个更快
  • 很难说

  • 在选项1中,即使do_a仍在工作,do_b功能是否会启动
  • 虽然Javascript支持异步编程,但您在这里展示的代码是完全同步的,因此函数将按照您编写它们的顺序工作

  • 在选项2中,即使do_a循环仍在工作,do_b循环是否会启动
  • 不,出于同样的原因

  • 哪个更快
  • 很难说

  • 在选项1中,即使do_a仍在工作,do_b功能是否会启动
  • 虽然Javascript支持异步编程,但您在这里展示的代码是完全同步的,因此函数将按照您编写它们的顺序工作

  • 在选项2中,即使do_a循环仍在工作,do_b循环是否会启动

  • 不,出于同样的原因。

    Javascript是单线程的,这意味着当另一个函数仍在工作时不能启动,除非另一个函数被中断或暂时释放控制。如果在元件上运行的功能不相互干扰,则选项1更好。特别是在文件上,缓存未命中可能起到相当大的作用。1。我会说选项1,因为你只循环了一次。2.是,如果
    do\u a
    是异步的。3.是的,如果
    do\u a
    是异步的。除非函数本身是异步的,否则这个问题不是关于JavaScript的异步性质,而是性能。这里到底什么是异步的?根据我收集的评论,JavaScript是同步的,除非明确指定为异步的(即,如何定义函数)?Javascript是单线程的-这意味着函数不能在另一个仍在工作时启动,除非另一个被中断或暂时释放控制。如果在元素上操作的函数不相互干扰,则选项1更好。特别是在文件上,缓存未命中可能会起到相当大的作用。1.我说的是选项11因为你只循环了一次。2.是的,如果
    do\u a
    是异步的。3.是的,如果
    do\u a
    是异步的。除非函数本身是异步的,否则这个问题不是关于JavaScript的异步性质,而是性能。这里什么是异步的?根据我收集的评论,JavaScript是synchronous,除非明确指定为异步(即,函数如何定义)?只需在#3上澄清一下:循环将完成,但其中的
    do_a
    函数如果是异步的,则可能仍在运行。我假定您的意思是,这取决于函数的性质……但一切都是相同的(假设每个函数完成所需的时间正好是T)3个循环(每个循环占用Tx1时间)会比1个循环占用Tx3时间快吗?@blex这是一个模式如何构造的问题。即使调用是异步的,下一个循环也可以组合为等待第一个循环completes@Trees4theForest“不清楚”是基于所讨论的事实。“更快”是未定义的。目前没有关于这些方法的基准。说明哪种方法“更快”将是一种推测-运行测试以获得准确的结果只是为了澄清#3:循环将完成,但其中的
    do#a
    函数如果是异步的,则可能仍在运行。我假设您的意思是,这取决于函数的性质……但一切都是一样的(假设每个函数完成所需的时间正好是T)3个循环(每个循环占用Tx1时间)会比1个循环占用Tx3时间快吗?@blex这是一个模式如何构造的问题。即使调用是异步的,下一个循环也可以组合为等待第一个循环completes@Trees4theForest“不清楚”基于所讨论的事实。“更快”没有定义。目前没有任何方法的基准出现问题。说明哪种方法“更快”将是一种推测——运行测试以获得准确的结果