Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从异步函数导入数据_Javascript_Reactjs_Asynchronous_Import - Fatal编程技术网

Javascript 从异步函数导入数据

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

我正在处理一个使用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 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内容从匿名函数中删除了。改变了这一点,成功了。谢谢