Javascript 异步等待而不是等待执行

Javascript 异步等待而不是等待执行,javascript,reactjs,react-native,redux,async-await,Javascript,Reactjs,React Native,Redux,Async Await,我的部分应用程序使用decSubPassword更新状态subPassword,然后将此状态传递给函数changePassword,该函数在其他上下文中更改状态。我将sendData设置为在按下按钮时运行。当我按下一次按钮时,通过分析日志,我可以看到子密码并没有改变,这意味着decSubPassword函数并没有更新我的状态。然而,当我第二次(在短时间内)按下按钮时,状态会立即更新。这向我表明,存在一些同步问题,并且应用程序不会等到执行decSubPassword。我尝试使sendData函数异

我的部分应用程序使用
decSubPassword
更新状态
subPassword
,然后将此状态传递给函数
changePassword
,该函数在其他上下文中更改状态。我将sendData设置为在按下按钮时运行。当我按下一次按钮时,通过分析日志,我可以看到子密码并没有改变,这意味着decSubPassword函数并没有更新我的状态。然而,当我第二次(在短时间内)按下按钮时,状态会立即更新。这向我表明,存在一些同步问题,并且应用程序不会等到执行
decSubPassword
。我尝试使
sendData
函数异步,并在
decSubPassword
中添加了wait,如下所示,但它没有解决我的问题

  const sendData = async (id) => {
    await decSubPassword({ id, secretKey });
    changePassword(subPassword);

    changeId(id);
    changeUsername(username);
    changeDomain(domain);
    changeDescription(description);

    console.log({ subPassword });
    console.log(subPassword);
  };
子密码函数

const decSubPassword = (dispatch) => async ({ id, secretKey }) => {
  const response = await trackerApi.get("/api/password/" + id + "/");
  const responsePassword = response.data.password;
  const decPassword = decryptRecord(responsePassword, secretKey);
  dispatch({ type: "dec_sub_password", payload: decPassword });
};

decSubPassword
不是异步函数。您将其定义为
decSubPassword=(dispatch)=>async({id,secretKey})=>{…}
,即返回异步函数的常规函数,因此
wait decSubPassword()
无需等待。也许你可以试试
decSubPassword=async({id,secretKey})=>{…}
?你把你的,应该是:
consthunkaction=(args)=>async(dispatch,getState)=>
so
constdecsubpassword=({id,secretKey})=>async(dispatch)
。不确定如何从组件中分派decSubPassword,是否使用connect或useDispatch,以及问题中为什么缺少该代码?