我有这个功能:
async listenProgrammStatus(uid, programmId, onUpdate) {
const unsubscribe = firebase.firestore().collection('Users').doc(uid).collection('ProgrammStatus').doc(uid + programmId).onSnapshot(function (doc) {
console.log('DOC', doc);
if (doc.exists) {
const status = doc.data();
status.id = doc.id;
onUpdate(status);
}
})
console.log(unsubscribe)
return unsubscribe;
},
我这样称呼它:
const unsubscribeStatus = db.listenProgrammStatus(this.user.uid, this.programm.id, (status) => {
console.log('STATUS', status);
this.status = status;
})
console.log('UNSUB', unsubscribeStatus)
this.unsubscribeStatus = unsubscribeStatus;
但是,我返回的退订函数在返回后似乎不起作用。呼叫unsubscribeStatus()
无效。
unsubscribe()
在listenProgrammStatus
中有效,但是当我返回该函数时,它似乎变成了Promise,因此我无法调用unsubscribeStatus ()
。
有什么想法吗?
答案 0 :(得分:1)
async
关键字具有两个作用:
return
关键字使用的任何值await
如果您不希望兑现,请不要将函数标记为async
。无论如何,您都不使用await
!