我正在尝试编写一个像这样简单的函数
const joinLeague = async () => {
const league = await attemptToJoinLeaugeIfItExists({ id, leaguePin })
console.log(league, 'fl')
if (league) {
// do something
}
}
我已经制作了一个类似这样的Firebase助手:
export const attemptToJoinLeaugeIfItExists = ({ id, leaguePin }: any) => {
return new Promise((res, rej) => {
res(
firebaseApp
.database()
.ref(`users/${id}`)
.once('value')
.then((snapshot) => { `
firebaseApp
.database()
.ref(`leagues`)
.once('value')
.then((snapshot) => {
console.log('in here')
})
}),
)
})
}
然而,league
返回未定义并且 in here
第二个返回。但是,我认为应该相反才对?我以为它会 "等待" 此函数解决,然后一旦解决了,它会显示结果。我做错了什么?
resolve/reject
而不是res/rej
。 - jarmodres
接收一个 Promise,因此整个结果将等待该 Promise 首先解决。如果结果是另一个 Promise,则 Promise 会自动展平/合并。 - VLAZ