飞行依赖异常回调执行行为

Inflight dependency weird callback execution behaviour

提问人:Atul 提问时间:8/1/2023 更新时间:8/1/2023 访问量:5

问:

我正在测试 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

我的查询是:

  1. 为什么 ,被叫了三次?callback called !! value is -> foo
  2. 根据输出,已被调用两次,这是预期的,因为使用相同的键调用三次只会执行一次,这从日志中也可以明显看出并且似乎是正确的。console.log("returning from callback !!");req"foo"callback
  3. 但是没有理由应该打印三次,而应该只打印一次。"callback called"
  4. 任何人都可以解释以下行为吗?
节点.js

评论


答: 暂无答案