嗨,我有两个功能。在另一个函数中调用它们。而且我需要在第一个函数完成后执行第二个函数。
很抱歉,这可能是一个非常简单的问题,但我仍在努力将承诺和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()函数。还需要异步吗?
答案 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)
})
};