我在Node.js中有两个相互依赖的测试文件。第一个测试运行一些异步工作,最后导出一个具有第二个测试所需的UUID的对象。
'use strict';
# simulate some async work
setTimeout(() => {
module.exports = {
id: '83b50527-73a9-4926-8247-e37547f3da6d'
};
}, 2000);
'use strict';
const testOne = require('./test_1.js');
console.log(testOne);
问题是因为module.exports
在第一次测试中被称为async,在测试中,console.log(testOne)
只是一个空对象。
如何让test_2.js
等到test_1.js
完成导出?
答案 0 :(得分:3)
<强> test_1.js 强>
module.exports = new Promise(resolve => {
setTimeout(() => resolve({
id: '83b50527-73a9-4926-8247-e37547f3da6d'
}), 2000);
});
<强> test_2.js 强>
const testOne = require('./test_1.js');
testOne.then(uuid => console.log(uuid.id));
请注意,每次导入 test_1.js 时都会返回相同的promise实例。这会影响承诺实例的使用方式。