等待不是在等待吗?

时间:2020-02-14 16:46:28

标签: javascript node.js react-native

嗨,我有两个功能。在另一个函数中调用它们。而且我需要在第一个函数完成后执行第二个函数。

很抱歉,这可能是一个非常简单的问题,但我仍在努力将承诺和js中的async / await缠绕在一起。谁能帮我弄清楚为什么这行不通。

async function addDetails(){
    const sub = await getSession();
    // now wait for firstFunction to finish...
    addProfileDetails(sub);
  };

我两个都有调试/记录语句。因此,我知道在定义变量sub之前,将执行addProfileDetails。

我正在使用react native和node.js

编辑:

export function getSession() {
  console.log("checking user ...............................................")
  Auth.currentSession().then(res=>{
      console.log("retrieving token");
      let accessToken = res.getAccessToken()
      let payload = accessToken.payload;
      console.log(`sub: ${payload.sub}`)
      return payload.sub
  }) 
};

这是我的getSession()函数。还需要异步吗?

2 个答案:

答案 0 :(得分:5)

您必须从要等待的功能中返回一个承诺

export function getSession() {
  console.log("checking user ...............................................")
  return Auth.currentSession().then(res=>{
      console.log("retrieving token");
      let accessToken = res.getAccessToken()
      let payload = accessToken.payload;
      console.log(`sub: ${payload.sub}`)
      return payload.sub
  }) 
};

答案 1 :(得分:-1)

在您的 getSession

中尝试一下
export function getSession() {
  return new Promise((resolve, reject) => {
      console.log("checking user ...............................................")
      Auth.currentSession().then(res=>{
      console.log("retrieving token");
      let accessToken = res.getAccessToken()
      let payload = accessToken.payload;
      console.log(`sub: ${payload.sub}`)
      resolve(payload.sub)
  })

};