提问人:Atul 提问时间:8/1/2023 更新时间:8/1/2023 访问量:5
飞行依赖异常回调执行行为
Inflight dependency weird callback execution behaviour
问:
我正在测试 NodeJS 飞行库,下面是所做测试的代码。
npm 包在这里 - inflight
var inflight = require('inflight')
function req(key, callback) {
console.log("inside req --> ",key);
callback = inflight(key, callback)
console.log('callback --> ',callback);
if (!callback) {
console.log("returning from callback !!");
return
}
console.log("calling settimeout !!")
setTimeout(function() {
console.log("inside setTimeout !!");
callback(null, key)
}, 8000)
}
const fn = (err, value) =>{
console.log('callback called !!');
if (err) console.log('You are in error !!');
else console.log("value is -> ",value);
}
req('foo', fn)
console.log('first function returned !!');
req('foo', fn)
console.log('second function returned !!');
req('foo', fn)
console.log('third function returned !!');
下面是上述代码的输出NodeJS - 20.3.0
inside req --> foo
callback --> [Function: f] { called: false }
calling settimeout !!
first function returned !!
inside req --> foo
callback --> null
returning from callback !!
second function returned !!
inside req --> foo
callback --> null
returning from callback !!
third function returned !!
inside setTimeout !!
callback called !!
value is -> foo
callback called !!
value is -> foo
callback called !!
value is -> foo
我的查询是:
- 为什么 ,被叫了三次?
callback called !! value is -> foo
- 根据输出,已被调用两次,这是预期的,因为使用相同的键调用三次只会执行一次,这从日志中也可以明显看出并且似乎是正确的。
console.log("returning from callback !!");
req
"foo"
callback
- 但是没有理由应该打印三次,而应该只打印一次。
"callback called"
- 任何人都可以解释以下行为吗?
答: 暂无答案
上一个:如何返回异步调用的响应?
下一个:在回调函数中检索数据
评论