首页 > 代码库 > Node.js 使用process.nextTick
Node.js 使用process.nextTick
今天发现Node.js文档很好地解释了如何使用process.nextTick.
Node.js文档链接 http://nodejs.org/api/process.html#process_process_nexttick_callback
process.nextTick(function callback(){});
Node.js确保callback会在处理下一个事件前被调用.
下面是Node.js文档的翻译:
process.nextTick(callback)
在下一个事件循环中调用callback. 这个函数不是简单地等同与setTimeout(fn, 0), 它的效率更高. 一般来说它在所有其他I/O事件触发前被调用, 但是也有例外. 参考下面的process.maxTickDepth
.
process.nextTick(function() { console.log(‘nextTick callback‘);});
这个函数很重要, 尤其当你在开发一些API, 而这些API需要在一个对象被创建以后, 但是在所有其他I/O之前, 允许用户添加事件处理函数到这个对象.
function MyThing(options) { this.setupOptions(options); process.nextTick(function() { this.startDoingStuff(); }.bind(this));}var thing = new MyThing();thing.getReadyForStuff();// thing.startDoingStuff() gets called now, not before.
非常重要, API应该100%同步, 或者100%异步. 考虑下面的例子:
// WARNING! DO NOT USE! BAD UNSAFE HAZARD!function maybeSync(arg, cb) { if (arg) { cb(); return; } fs.stat(‘file‘, cb);}
这个API很危险, 如果这么调用API:
maybeSync(true, function() { foo();});bar();
这段代码不明确的地方是, 我们不清楚foo()和bar()哪个会被先调用.
这样写更好
function definitelyAsync(arg, cb) { if (arg) { process.nextTick(cb); return; } fs.stat(‘file‘, cb);}
Node.js 使用process.nextTick
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。