模块导出后的 node.js变量作用域



我必须访问模块外的变量,即使变量引用已更新。

below my module.js:

'use strict';
const Foo = () => {
const _date = new Date();
const _id = _date.getTime().toString(16);
console.log(`Foo() _id: ${_id}`);

setTimeout(() => {
f = Foo();
}, 5000); // 5s

return {
get_id: () => {
return _id;
}
}
}
let f = Foo();
module.exports = {
foo: f,
}

below my index.js:

const {foo} = require('./module');
console.log(`foo.get_id(): ${foo.get_id()}`);
setTimeout(() => {
console.log(`foo.get_id(): ${foo.get_id()}`);
}, 3000); // 3s

输出:

$ node index.js

Foo() _id: 17b0babddc1

foo.get_id (): 17 b0babddc1

foo.get_id (): 17 b0babddc1

Foo() _id: 17b0babf15e

Foo() _id: 17b0bac04f5

foo.get_id()在我更新模块上的变量f之后似乎是未定义的。

如何解决这个问题?

您的Foo函数等待5秒,然后试图分配f = Foo();,但变量f无法从您的函数访问。

然而f是全局的,我不明白。

最新更新