首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法看到节点js程序中的延迟。

无法看到节点js程序中的延迟。
EN

Stack Overflow用户
提问于 2016-07-03 16:35:27
回答 1查看 42关注 0票数 1

我是节点js的新手,我从下面的程序开始,

我想看看延迟或并行执行是如何工作的,所以我从教程网站上获取了一个程序,我的预期结果是

  1. 在这里点菜,等3秒
  2. 在这里等待3秒,这样6秒就过期了
  3. 交付第1号订单(自第一次超时5秒起)
  4. 下订单3等等,在这里我们接受2个订单,在6秒后交付订单,在5秒后结束。

但我的产出低于

  1. 定单延迟1/3秒
  2. 定单延迟2/3秒
  3. 定单延迟3/3秒
  4. 定单延迟4/3秒
  5. 定单延迟5/3秒
  6. 交付订单编号1//无延误
  7. 交付第2号订单//无延误
  8. 交付第3号订单//无延误
  9. 交付第4号订单//无延误
  10. 交付第5号订单 函数placeOrder(orderNumber) {console.log(‘orderNumber是’+orderNumber);cookAndDeliverFood(函数() {console.log(‘传递订单号’+orderNumber);}) }}函数cookAndDeliverFood(回调,1000);var waitTill =新日期(新日期().getTime()+3* 1000);而(waitTill>新日期(){} placeOrder(1);placeOrder(2);placeOrder(3);placeOrder(4);placeOrder(5);

请有人解释一下为什么setTimeOut(回调,5000)没有在5秒后立即被调用,为什么它要等待所有的订单和交付,为什么它不能交付TimedOut订单?

您能帮我实现一个代码吗?正如我前面提到的,它可以给我预期的输出吗?

EN

回答 1

Stack Overflow用户

发布于 2016-07-03 16:46:51

setTimeout将在堆上放置一个函数,在堆之后运行该函数:

  • 一段时间过去了,
  • 事件循环不忙做其他事情

因为JavaScript忙于运行while循环,所以它不会运行任何等待超时的函数。它将首先完成该函数的运行。

使用超时来创建延迟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38172035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档