Javascript 从local.txt文件读取数据并将其存储在变量中
我有一个helper函数(fetchData.js是文件名),它将发送一个json数组,如下所示Javascript 从local.txt文件读取数据并将其存储在变量中,javascript,async-await,Javascript,Async Await,我有一个helper函数(fetchData.js是文件名),它将发送一个json数组,如下所示 export const jsonData = async (file) => { const response = await fetch(file); const jsonData = await response.json(); return jsonData; }; 现在我想在其他文件中使用这个助手 import { jsonData } from './fe
export const jsonData = async (file) => {
const response = await fetch(file);
const jsonData = await response.json();
return jsonData;
};
现在我想在其他文件中使用这个助手
import { jsonData } from './fetchData.js';
jsonData('./data2.txt').then((data) => {
console.log(data);
});
而且它完美地显示数据,绝对没有问题
但如果我做了这样的事
import { jsonData } from './fetchData.js';
let returnedData;
jsonData('./data2.txt').then((data) => {
returnedData = data;
});
console.log(returnedData);
它返回未定义的
怎么办
编辑:
您可以使用
wait
,因为您的jsonData
是异步的:
let returnedData = await jsonData('./data2.txt');
由于
承诺
是异步的,因此必须在然后
块中登录
import { jsonData } from './fetchData.js';
let returnedData;
jsonData('./data2.txt')
.then((data) => {
returnedData = data;
})
.then(() => console.log(returnedData));
将console.log移到
中,然后将移到returnedData=data的正下方
所有使用returnedData
的操作都应该在then
中,那么我为什么要使用returnedData呢?我不能对数据也这样做吗?这不是我的重点,我想将数据存储在局部变量中。您必须等待异步jsonData
console.log
似乎是在设置returnedData
之前执行的。然后使用async await
,让returnedData=await jsonData('./data2.txt')
如果我这样做,那么我会得到一个错误,await是一个保留字您jsonData
不是异步的。尝试定义它异步jsonData(文件){…}
查看