【问题标题】:How to get data from an async function in React如何从 React 中的异步函数获取数据
【发布时间】:2021-04-04 00:25:10
【问题描述】:

我正在使用 react-adal 对 Azure AD 进行身份验证。通过使用 runWithAdal 函数作为我的应用程序的包装器,它就像一个魅力。

authContext 是 AuthenticationContext 包含用于进行 OIDC 调用的 ID。当我对它们进行硬编码时,一切都像魅力一样。当然,我们不想硬编码,所以这些 ID 存储在 config.json 文件中。我有一个异步函数,可以从文件中“加载”这些 ID 并返回它们。

问题是我在调用这个加载函数时必须使用带有等待的异步函数。正如您在下面看到的,用于构建 adalConfig 组件的那些 ID。我的问题是如何在异步函数下完成所有这些工作。我尝试在异步函数中创建变量并设置这些变量的值,但是当我对函数外部的一个变量执行 console.log() 时,我得到“未定义”????有没有人有什么建议?

【问题讨论】:

  • 在获得配置之前我不需要发生任何事情。我可以在函数“内”做一个 console.log() ,我会看到这个值。如果我在函数“外部”执行此操作,我将一无所获。

标签: reactjs function async-await


【解决方案1】:

我建议你先使用load().then(response => {调用加载函数 然后您使用响应来构建adalConfig 并从其中调用runWithAdal
这是一个例子:

load().then(response => {
   const authContext = buildAuthContext(response);

   runWithAdal(authContext,() => {
     ReactDOM.render(<Router> <App /> </Router>, 
        document.getElementById("root"));
     }, DO_NOT_LOGIN);
   },DO_NOT_LOGIN);
});

【讨论】:

  • 感谢您的贡献。要进一步提高质量,请考虑编辑以包括为什么您建议此解决方案。随着未来的访问者学习一些东西来帮助(或防止)他们自己的编码问题,大多数赞成票是随着时间的推移而积累的。用文本作为代码介绍突出显示您的过程非常棒!期待您的更多贡献。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-07
  • 2020-06-05
相关资源
最近更新 更多