Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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_Node.js_Reactjs_Asynchronous - Fatal编程技术网

Javascript 导入的异步函数的异步等待未正确等待

Javascript 导入的异步函数的异步等待未正确等待,javascript,node.js,reactjs,asynchronous,Javascript,Node.js,Reactjs,Asynchronous,我很困惑 我创建了一个异步实用程序函数,从一个文件导出并导入到React类组件中。该函数对返回对象的身份验证服务进行API调用 我的目标是能够在我的组件中调用该函数,并将返回的对象设置为一个名为“tokens”的变量,然后我可以进一步操作该变量 我的问题是,无论我如何格式化它,我都无法让组件中的函数在继续之前等待异步函数的返回 以下是实用程序函数的简化版本: // configure and send API request using Axios library export const re

我很困惑

我创建了一个异步实用程序函数,从一个文件导出并导入到React类组件中。该函数对返回对象的身份验证服务进行API调用

我的目标是能够在我的组件中调用该函数,并将返回的对象设置为一个名为“tokens”的变量,然后我可以进一步操作该变量

我的问题是,无论我如何格式化它,我都无法让组件中的函数在继续之前等待异步函数的返回

以下是实用程序函数的简化版本:

// configure and send API request using Axios library
export const retrieveTokens = async () => {
  
  // configure request
  var config = {
    // configs
  };

  // send request
  axios(config)
    // handle response
    .then(function (response) {
      let cognitoTokens = response.data;
      console.log("A:")
      console.log(cognitoTokens);
      return cognitoTokens;
    })
    // handle error
    .catch(function (error) {
      console.log(error);
    });
};
然后将此实用程序函数导入React类组件,如下所示:

import React, { Component } from "react";
import { retrieveTokens } from "./utils.js";

class HeaderLogic extends Component {
  componentDidMount() {
    async function authenticationFlow() {
      let tokens = await retrieveTokens();
      console.log("B:");
      console.log(tokens);

    }
    authenticationFlow();
  }

  render() {
    return <></>;
  }
}

export default HeaderLogic;
但我只能得到

B:
Undefined

A:
{Tokens}


我尝试了各种不同的语法,但我无法让控制台日志在
authenticationFlow()
中等待

您忘了
返回
。另外,如果函数中没有任何
wait
,则不要将其声明为
async
(这不是因为它会导致任何问题,而是因为它没有用处):


你需要给retrieveTokensflummoxed加上承诺这是个有趣的词谢谢你教我这就是它。非常感谢。很高兴它起了作用!
B:
Undefined

A:
{Tokens}

// configure and send API request using Axios library
export const retrieveTokens = () => {
  
  // configure request
  var config = {
    // configs
  };

  // send request
  return axios(config)
    // handle response
    .then(function (response) {
      let cognitoTokens = response.data;
      console.log("A:")
      console.log(cognitoTokens);
      return cognitoTokens;
    })
    // handle error
    .catch(function (error) {
      console.log(error);
    });
};