Javascript 从异步函数导入数据
我正在处理一个使用AWS Cognito的项目。有些配置参数需要通过API调用从服务器获取。我将API调用保存在config.js文件中,并使用async/await从服务器获得如下响应Javascript 从异步函数导入数据,javascript,reactjs,asynchronous,import,Javascript,Reactjs,Asynchronous,Import,我正在处理一个使用AWS Cognito的项目。有些配置参数需要通过API调用从服务器获取。我将API调用保存在config.js文件中,并使用async/await从服务器获得如下响应 const getCognitoConfigs = async () => { const res = await axios.get(`${apiurl.apiurl}/logininfo`); console.log(res.data); return res.data; }; export de
const getCognitoConfigs = async () => {
const res = await axios.get(`${apiurl.apiurl}/logininfo`);
console.log(res.data);
return res.data;
};
export default getCognitoConfigs;
在我的index.js(在这里我设置了Cognito)中,我从config.js文件导入了这个函数
import getCognitoConfigs from "./config";
const configs = getCognitoConfigs();
Amplify.configure({
Auth: {
mandatorySignIn: true,
region: configs.cognito.region,
userPoolId: configs.cognito.user_pool,
userPoolWebClientId: configs.cognito.app_client_id
}
});
问题是async await不会停止程序执行,因此我将“configs”设置为未定义。在api调用解决之前,我是否可以停止应用程序?谢谢。如果您想使用async/await,您必须将index.js包装在异步函数中并添加
await getCognitoConfigs();
或者你可以用承诺,比如
getCognitoConfigs().then(res => Amplify.configure({...}))
通过将index.js中的
getCognitoConfigs()
封装在一个(匿名)异步函数中,您可以等待它吗?否则,您可以使用.then()
检索getCognitoConfigs()
承诺的结果;我尝试过这样做,但仍然得到一个错误('configs'为null)let configs=null;(异步函数(){const res=await getCognitoConfigs();console.log(res);configs=res;})();是否在同一匿名异步函数中运行Amplify.configure
?如果不这样做,configs
将只是null
,因为异步函数只有在运行Amplify.configure
后才能执行。啊,是的,我将Amplify内容从匿名函数中删除了。改变了这一点,成功了。谢谢