【发布时间】:2015-11-01 20:38:41
【问题描述】:
我是 Node.js 的新手。我需要做些什么才能让 setTimeout() 工作吗?
这是一个代码 sn-p。
在完成时设置 appMsg.doneLoadTables = true 的异步代码
do {
console.log('waiting ... ' + appMsg.doneLoadTables);
setTimeout(function() { console.log('waiting ...'); }, 1000);
} while (!appMsg.doneLoadTables);
症状:
- (虽然对 console.log 的两次调用相似,但只有第一次会打印 appMsg.doneLoadTables 的值。)每个结果都包含该值。
- console.log 调用之间的间隔远小于 1000 毫秒。 (我怀疑间距与计算机可以处理此处显示的循环一样快。)
- 虽然我希望异步例程可以在我在这里打算的延迟期间继续处理,但我从未见过这个循环完成;就好像循环占用了所有处理资源并阻止异步例程完成其工作并设置将结束此循环的变量。
我对 Node 4.2.1 有过这种体验;安装 Node 5.0.0 后我继续拥有这种体验。
我已经看到关于 setTimeout() 的类似问题已经在这里被问过很多次了。我希望我在 setTimeout() 中使用 IIFE 可以使这个问题与所有这些问题不同。
提前感谢您提供的任何帮助...
【问题讨论】:
-
“我希望我在 setTimeout() 中使用 IIFE 可以使这个问题与所有这些问题不同。” — 它没有。
-
您传递给
setTimeout的匿名函数不是 IIFE,因为它不会立即被调用。 -
我撤回了这个问题。感谢所有的答案。我更好地理解异步是如何工作的。如果我知道我在重复之前的问题,我就不会提交了。这是一个善良而熟练的团队!
标签: javascript node.js