javascript - 在 Promise 中使用导出的 Object 变量
问题描述
我有两个正在处理的 javascript 文件。在其中一个文件(file1.js)上,我在底部有一行用于导出对象键变量。
module.exports = {randomData};
在另一个文件(file2.js)上,我将它包含在顶部:
const {randomData} = require('./file1.js');
现在,当我尝试{randomData}
在 file2.js 的 Promise 部分之一中使用此对象时,它仍然未定义为值。我意识到这是因为 Promise 代码在 file1.js 的导出部分甚至完成执行以实际提供{randomData}
任何值之前运行。我试图用 Promises/asyncs/awaits 来包装东西,但我没有得到任何结果。我尝试了以下方法,认为它会起作用。
var randomData = {};
function printRandomData(){
setTimeout(() => {
console.log(randomData);
}, 1000);
}
function fetchRandomData(){
return new Promise((resolve, reject) => {
setTimeout(() => {
randomData = require('./file1.js');
if(randomData){
resolve();
}
else{
reject('Error: Something went wrong!')
}
}, 2000);
})
}
async function init() {
await fetchRandomData(); // wait until the promise resolves (*)
printRandomData(); // "done!"
}
init();
我希望上面的代码printRandomData()
最后运行,然后输出 的值randomData
,此时应该将其设置为与fetchRandomData()
方法不同的值。但是,情况并非如此,因为打印结果为空对象。但是,从 file1.js 打印将显示randomData
包含值。
require
在 file2.js 中发生其他任何事情之前,我如何使该部分首先发生?
解决方案
推荐阅读
- c++ - C++ 如果条件不起作用
- javascript - Javascript如何深度克隆其中包含对象的多维数组?
- vba - 什么属性会将插入符号(或光标类型栏)返回到 VBA Excel 用户窗体中的指定文本框?
- python-3.x - 如何确保 pandas.DataFrame.to_csv 立即刷新
- php - PHP:字符串自动转换为浮点数并给出负数
- json - 使用 jq 提取对 shell 变量的 json 响应
- javascript - 等待promise解决并在它执行时做其他事情
- registration - 注册前的 Buddypress 预加载页面
- cordova - Cordova cordova-plugin-googleplus 增量范围
- mysql - 我的测试通过但没有正常结束