OkHttps 串行預(yù)處理器

2020-05-10 00:33 更新

  普通預(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 吧,項目地址:


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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號