JavaScript / Node.js事件循环tick id
JavaScript / Node.js event loop tick ids
我想知道是否有一些整洁的方法可以知道函数是否在当前滴答(函数声明的滴答)中被调用,或者Node.js事件循环的下一个滴答(或一些未来的滴答)
例如:function foo(cb){
// we can fire callback synchronously
cb();
// or we can fire callback asynchronously
process.nextTick(cb);
}
say将像这样调用foo:
function outer(){
const currentTickId = process.currentTickId;
function bar(){ //bar gets created everytime outer is called..
if(process.currentTickId === currentTickId){
//do something
}
else{
// do something else
}
}
// foo is always called in the same tick that bar was
// declared, but bar might not be called until the next tick
foo(bar);
}
大多数应用程序不需要这样的东西,但我正在编写一个库,如果可能的话,拥有这个功能将是有用的!注意,process.currentTickId
是我在这个例子中创建的
看起来你已经发现了process.nextTick
你可以用这个来建立一个系统来实现"process.currentTickId
",因为你的问题中的代码表明你需要:
process.currentTickId = 0;
const onTick = () => {
process.currentTickId++;
process.nextTick(onTick);
};
process.nextTick(onTick);
NPM lib:https://www.npmjs.com/package/event-loop-ticks
基于@Emmett post的改进答案:
let _tick = 0;
const onTick = () => {
_tick++;
setImmediate(() => process.nextTick(onTick)).unref();
};
process.nextTick(onTick);
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 如何在下面的ES6循环中获得前面的文本
- 为什么“;未定义的“;在JavaScript中结束循环
- Javascript循环不会自我更新
- 如何使用jquery处理php循环通过元素
- 而循环只设置php中输入字段中的第一个值
- 循环遍历数组中的特定索引
- Javascript返回值只在循环中返回一次
- 按照选项卡索引的顺序循环一个jQuery选择
- 循环遍历以数组为值的Javascript对象
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 循环结束/推送到数组之前在页面上呈现EJS
- 循环比赛位置算法
- jQuery循环在特定位置暂停
- 我的javascript for循环不起作用
- 循环浏览多个身体背景图像
- W3C循环样式的JavaScript
- JavaScript / Node.js事件循环tick id