訂閱主畫面並留下 adapter trace
修改檔案:script.js
完成後看見:主畫面 subscriber 收到初始 snapshot,trace 顯示 subscribe 與 notify
CHAPTER 24 · PRACTICE WORKSPACE
完成可追蹤、可取消、可模擬訂閱失敗並重試的 memory adapter 即時留言原型,不冒充 Firebase
TASK STATUS
修改檔案:script.js
完成後看見:主畫面 subscriber 收到初始 snapshot,trace 顯示 subscribe 與 notify
修改檔案:script.js
完成後看見:留言以純文字渲染,Console subscriber 可訂閱並可 unsubscribe
修改檔案:script.js
完成後看見:失敗時保留舊留言且無幽靈 listener,retry 後畫面與 Console subscriber 同時收到新 snapshot
WORKSPACE
已完成 TASK-02;先核對可見結果,再前往 TASK-03。
FOCUS TASK · TASK-03
比較:重試前要確認失敗 listener 已清理,否則成功後可能同一份 snapshot 被處理多次。
現在做:在 Solution 先開啟 Console subscriber,記錄 subscriber=2 與目前第一筆留言;按「模擬下次訂閱失敗」後確認 status 含「訂閱失敗」、第一筆留言仍在、subscriber 回到 1;按「重試訂閱」後確認 subscriber=2,再送出「復原後留言」,核對畫面最後一筆、Console snapshot 與 trace 的 notify update。
預期:失敗後 status 含「訂閱失敗」、第一筆留言仍在、subscriber 回到 1;retry 後 subscriber=2,新增「復原後留言」時畫面、Console 與 trace 各更新一輪。
證據:留下失敗前後、retry 後與新增留言後的 subscriber 數、最後一筆文字、Console snapshot 次數與 trace,證明沒有幽靈 listener 或重複通知。
比較:訂閱失敗時保留最後可用資料,retry 成功後再用新 snapshot 更新。
現在做:重跑失敗路線並做四格時間線:失敗前的留言/subscriber、失敗後的 status/舊留言/subscriber、retry 後的 subscriber=2、送出「復原後留言」後的畫面與 Console 通知;確認沒有重複留言或幽靈 listener。
預期:四格時間線完整:失敗前保留留言/subscriber、失敗後 status 錯誤且留言不清空、retry 後 subscriber=2、送出「復原後留言」後主畫面與 Console 都收到一次更新,沒有重複項目。
證據:用四格時間線記錄 status、舊留言、subscriber 數、最後一筆文字與 Console 通知,證明失敗保留可用資料、retry 後才以新 snapshot 更新。
完成條件:DONE-03:失敗時保留舊留言且無幽靈 listener,retry 後畫面與 Console subscriber 同時收到新 snapshot
MEMORY ADAPTER(只練介面,不是 Firebase 連線)
本頁每次重新整理都會建立獨立記憶體,不會跨分頁同步。
尚未訂閱
目前 subscriber:0 個
CONTINUE
前往 Solution,依要求完成「模擬訂閱失敗、復原重試並新增留言」。
CHAPTER HANDOFF
接收第 23 章:沿用已驗證的 payload 與一次提交生命週期;本章不重做表單驗證,改追蹤初始 snapshot、後續 push 與 unsubscribe。
交給第 25 章:完成後帶著 memory adapter 的 subscriber trace、安全 render、取消訂閱與失敗重試證據;下一章直接加入 uid 與權限判斷,不把 memory adapter 宣稱成 Firebase。
前往第 25 章:身份、uid 與權限模型