无法在node js程序中看到延迟
Unable to see the delay in the node js program
我是node js的新手,我从下面的程序开始,
我想看看延迟或并行执行是如何工作的,所以我从教程网站上取了一个程序,我的预期结果是
- 下订单1这里它将等待3秒
-
下订单2这里它将等待3秒,因此6秒过期
-
发送订单号1(从第一次超时5秒开始)过期)
- 下订单3个等等,这里我们接2个订单,发货订单6秒后,5秒后结束
但是我得到了低于输出
- 订单号为1//3秒延迟
- 订单号为2//3秒延迟
- 订单号为3//3秒延迟
- 订单号为4//3秒延迟
- 订单号为5//3秒延迟
- 1号订单发货//无延误
- 2号订单发货//无延误
- 第3号订单发货//无延误
- 4号订单发货//无延误
-
第5号订单发货
function placeOrder(orderNumber) { console.log('Order numner is ' +orderNumber); cookAndDeliverFood(function () { console.log('Delivering order Number ' +orderNumber); }) } function cookAndDeliverFood( callback) { setTimeout(callback , 1000); var waitTill = new Date(new Date().getTime() + 3 * 1000); while(waitTill > new Date()){} } placeOrder(1); placeOrder(2); placeOrder(3); placeOrder(4); placeOrder(5);
有人能解释一下为什么setTimeOut(callback,5000)没有在5秒后立即被回调,为什么它等待所有的订单和交付订单,为什么它不能交付超时订单?
你能帮我实现一个代码,可以给我预期的输出,我上面提到的?
setTimeout
将把一个函数放在堆中,它将在以下情况下运行:
- 已经过了一段时间和
- 事件循环没有忙着做其他事情
由于JavaScript正忙于运行while
循环,它不会运行任何等待超时的函数。它将首先完成该函数的运行。
使用超时来创建延迟
相关文章:
- 如何减少在移动网络应用程序上播放声音的延迟
- 实现延迟的jquery更改事件处理程序
- 引导程序切换菜单中的延迟
- 使用Twitter引导程序's Scrollspy到延迟加载(滚动加载)异步JavaScript
- 是否有任何方法可以像处理jQuery中附加到XHR延迟对象的done方法处理程序一样处理websocket onmess
- 如何使用 window.open 创建一个不确定延迟的弹出窗口(用于社交身份验证),而弹出窗口阻止程序会阻止它
- Android Java 处理程序在循环中的每个记录处发布延迟
- 余烬.为真正的大应用程序延迟加载模板和 JavaScript
- 延迟加载角度应用程序不会加载指令
- Chrome扩展程序:延迟打开标签页
- 如何避免Spotify应用程序中同步web服务调用的延迟
- 从javascript监控web应用程序的UI延迟
- GWT.延迟启动应用程序
- 页面预加载程序加载延迟
- angularjs将加载应用程序延迟到指定条件
- 使用webkit运行iOS应用程序时延迟选择
- jQuery.css():属性中是否存在固有延迟's对元素的应用程序
- 如何设置动画在加载下一页之前完成的延迟?[jQuery,引导程序]
- 可以在事件处理程序上使用延迟对象链吗?
- 如何在 Javascript 事件处理程序中延迟向 DOM 添加元素