我写了很多看起来像这样的模块:
function get(index, callback) {
if (cache[index] === null) {
request(index, callback); // Queries database to get data.
} else {
callback(cache[index]);
}
}
注意:这是我实际代码的简化版本。
该回调要么在同一次执行中被调用,要么在一段时间后被调用。这意味着模块的用户不确定首先运行哪个代码。
我的观察是这样的模块重新引入了以前由 JavaScript 引擎解决的多线程的一些问题。
问题:我应该使用process.nextTick
还是确保在模块外调用回调是安全的?