[英]Why do I have to use Firebase unsubscribe here?
嘿伙計們,我正在關注 Udemy 指南,我正在使用 Firebase 構建一個小型聊天應用程序,用戶界面看起來像這樣。
https://i.imgur.com/qCBSF35.png
到目前為止,在 JS 中,我已經建立了一個聊天室 class,其中包含一些屬性和一些方法。 其中一種方法是更新聊天室,基本上是當用戶單擊頂部的其中一個按鈕時,我希望房間更新到該房間並從該房間的 Firestore 中檢索聊天文檔。
現在我遇到了一些我仍在努力尋找理解的方法。 我將在下面粘貼整個代碼,以便您理解
getChats(callback) {
this.unsub = this.chats
.where('room', '==', this.room)
.orderBy('created_at')
.onSnapshot(snapshot => {
snapshot.docChanges().forEach(change => {
if(change.type === 'added') {
callback(change.doc.data(), change.doc.id);
}
});
});
}
updateName(username) {
this.username = username;
}
updateRoom(room) {
this.room = room;
if(this.unsub) {
this.unsub();
}
}
因此,如您所見,getChats 方法是一個實時監聽器。 因此,當調用 updateRoom 時,房間應該更新為 function 中傳遞的任何內容,但我不明白為什么我必須取消訂閱? 我的意思是在我更新房間后立即取消訂閱沒有意義? 我知道 onSnapshot 返回一個 function 並且我們可以使用它來取消訂閱實時監聽器,但我也不明白為什么我們需要它? 我們不能沒有它嗎? 我試圖尋找解釋,但沒有什么對我有太大幫助。
該代碼正在取消訂閱您之前訂閱的房間。 正常的流程是:
如果不清楚代碼的流程如何,我建議在調試器中單步執行,並在所有重要的方法和塊中設置斷點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.