W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
普通預(yù)處理器都是可并行處理的,然而有時我們希望某個預(yù)處理器同時只處理一個任務(wù)。比如 當Token
過期時我們需要去刷新獲取新Token
,而刷新Token
這個操作只能有一個任務(wù)去執(zhí)行,因為如果n
個任務(wù)同時執(zhí)行的話,那么必有n-1
個任務(wù)剛刷新得到的Token
可能就立馬失效了,而這是我們所不希望的。
為了解決這個問題,OkHttps 提供了串行預(yù)處理器,它可以讓 HTTP 任務(wù)排好隊,一個一個地進入預(yù)處理器:
HTTP http = HTTP.builder()
.addSerialPreprocessor((PreChain chain) -> {
HttpTask<?> task = chain.getTask();
if (!task.isTagged("Auth")) {
chain.proceed();
return;
}
// 檢查過期,若需要則刷新Token
requestTokenAndRefreshIfExpired((String token) -> {
task.addHeader("Token", token);
chain.proceed(); // 調(diào)用此方法前,不會有其它任務(wù)進入該處理器
});
})
.build();
串行預(yù)處理器實現(xiàn)了讓HTTP任務(wù)排隊串行處理的功能,但值得一提的是:它并沒有因此而阻塞任何線程!
如果覺得 OkHttps 好用,就去點個 Star 吧,項目地址:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: