OkHttps 串行預(yù)處理器

2020-05-10 00:33 更新

  普通預(yù)處理器都是可并行處理的,然而有時(shí)我們希望某個(gè)預(yù)處理器同時(shí)只處理一個(gè)任務(wù)。比如 當(dāng)Token過期時(shí)我們需要去刷新獲取新Token,而刷新Token這個(gè)操作只能有一個(gè)任務(wù)去執(zhí)行,因?yàn)槿绻?code>n個(gè)任務(wù)同時(shí)執(zhí)行的話,那么必有n-1個(gè)任務(wù)剛刷新得到的Token可能就立馬失效了,而這是我們所不希望的。

  為了解決這個(gè)問題,OkHttps 提供了串行預(yù)處理器,它可以讓 HTTP 任務(wù)排好隊(duì),一個(gè)一個(gè)地進(jìn)入預(yù)處理器:

HTTP http = HTTP.builder()
        .addSerialPreprocessor((PreChain chain) -> {
            HttpTask<?> task = chain.getTask();
            if (!task.isTagged("Auth")) {
                chain.proceed();
                return;
            }
            // 檢查過期,若需要?jiǎng)t刷新Token
            requestTokenAndRefreshIfExpired((String token) -> {
                task.addHeader("Token", token);
                chain.proceed();               // 調(diào)用此方法前,不會有其它任務(wù)進(jìn)入該處理器
            });
        })
        .build();

  串行預(yù)處理器實(shí)現(xiàn)了讓HTTP任務(wù)排隊(duì)串行處理的功能,但值得一提的是:它并沒有因此而阻塞任何線程!

如果覺得 OkHttps 好用,就去點(diǎn)個(gè) Star 吧,項(xiàng)目地址:


官方網(wǎng)站:http://okhttps.ejlchina.com/

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號