我在使用 Node.js 进行异步/等待时遇到问题。当我尝试这个时:
function Read_Json_File() {
fs.readFile('import.json','utf-8',(err, data) => {
if (err) throw err;
json_data = JSON.parse(data);
return json_data;
});
}
async function run_demo() {
let get_json_file = await Read_Json_File();
console.log(get_json_file);
}
run_demo();
它返回未定义的而不是文件中的 JSON。为什么不等待文件读取完成?
你没有返回任何东西Read_Json_File
,因此你得到了未定义的——你从回调中返回数据,但不会产生任何结果。相反,要使用 async/await,您需要承诺fs.readFile
因为还没有。然后你就可以使用 async/await:
function readJSONFile() {
return new Promise((resolve, reject) => {
fs.readFile('import.json', 'utf-8', (err, data) => {
if (err) reject(err);
resolve(JSON.parse(data));
});
});
}
Await 需要实际的promise等待。它的作用是返回一个使用await 的承诺。因此,我们等到调用resolve
- 当我们完成加载 JSON 时会发生这种情况:
let json = await readJSONFile();
console.log(json);
这里我们调用readJSONFile
。这会返回一个 Promise,该 Promise 在 JSON 文件加载完成时解析,并允许看似同步执行异步代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)