最後的效果:
請求的方法類型和 url 都被記錄了下來,同響應一起。
設置斷點來觀察自定義 HTTP interceptor 運行時原理:
我們自定義的 intercept 也是通過依賴注入的方式被注入到 httpInterceptor 的調度器裏。
首先把 method 和 urlWithParams 從 request 裏提取出來:
返回的 Observable pipe 方法裏的 switchMap 裏的處理函數,什麼時候會被觸發?
在響應式編程的世界裏,不要太在意 switchMap 裏指定的函數體是何時被調用的——充斥的全是 rxjs 的回調。
只需要注意 switchMap 裏必須返回一個 Observable wrapper 對象。
再看這個 custom interceptor 什麼時候被實例化的?
首先把系統所有的 HTTP_INTERCEPTORS 注入的實現都取出來,放到數組裏,然後使用數組的 reduceRight 方法,逐一調用之。
我們自定義的 Custom HTTP Interceptor 赫然在數組裏,所以可以被調用到:
更多Jerry的原創文章,盡在:"汪子熙":