Javascript在Node.js中是相同的
Javascript are these calls the same in Node.js?
我想知道这两个代码块在 Node.js 中是否相同?
// Style 1
setTimeout(function () {
console.log('hello');
}, 0);
// Style 2
console.log('hello');
由于上面我正在通过超时0
,因此应该没有等待时间。它是否与直接调用console.log('hello');
而不使用 setTimeout 相同?
它们是不同的,第一个将函数添加到事件队列中,以便在当前执行路径完成后一有机会就可以执行。第二个将立即执行它。
例如:
console.log('first');
setTimeout(function(){
console.log('third');
}, 0);
console.log('second');
这些打印的顺序是明确定义的,您甚至可以在打印"秒"之前做一些缓慢(但同步)的事情。可以保证console.log('second');
仍将在 setTimeout 的回调之前执行:
console.log('first');
setTimeout(function () {
console.log('third'); // Prints after 8 seconds
}, 0);
// Spinlock for 3 seconds
(function(start){ while(new Date - start < 3000); })(new Date);
console.log('second'); // Prints after 3 seconds, but still before 'third'
// Spinlock for 5 seconds
(function(start){ while(new Date - start < 5000); })(new Date);
严格来说,它们并不完全相同 - setTimeout 让浏览器有机会"赶上"它迫切需要完成的任何任务。但就我们通常而言,99%的时间他们会做同样的事情。
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- node.js请求数据事件未在CORS ajax调用中触发
- 使用node.js制作网站
- 使用node.js服务器中的evernote api获取note内容
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 使用CI和CodeDeploy对node.js应用程序进行连续部署
- 在Node.js中上传和检索图像
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 如何使用 Node JS 获取 JSON 嵌套数组值