移動端不定期更新token方案

2021-09-26 10:58:42 字數 2364 閱讀 2735

客戶端需要不定期更新token,同時得保證在傳送更新token同時其他網路請求掛起,否則會報token失效。待新token回來之後,重新發起掛起的請求。

應服務端要求,更新token請求時,老token立刻失效

let token = 1 當前請求使用的token

let refreshtoken = false // 是否處於更新token中

let subscribers = ; // 掛起的請求陣列

/** * 網路請求入口

*/function callapi (data, time = 1000) )

});return retryoriginalrequest;

} // 判斷是否是執行更新token

if (data && (data.type == 'refreshtoken'))

return request(time, data.type)

}/**

* 執行網路請求

*/function request(ms, type) );

}/**

* token更新後,重新發起掛起的請求

*/function onaccesstokenfetched() )

refreshtoken = false

subscribers = ;

}/**

* push掛起的請求

* @param callback 掛起的請求

*/function addsubscriber(callback)

// before

callapi(, 1000).then(consoleresponse)

// todo

callapi(, 2000).then((v) => )

// doing

callapi(, 2000).then(consoleresponse)

callapi(, 2000).then(consoleresponse)

callapi(, 2000).then(consoleresponse)

callapi(, 2000).then(consoleresponse)

// after

settimeout(() => callapi(, 2000).then(consoleresponse), 5000)

function consoleresponse (v)

"0000callapi=== type:first  token:1"

"1111request=== type:first token:1"

"0000callapi=== type:refreshtoken token:1"

"1111request=== type:refreshtoken token:1"

"0000callapi=== type:second token:1"

"0000callapi=== type:third token:1"

"0000callapi=== type:four token:1"

"0000callapi=== type:five token:1"

"2222response===type:first token:1"

"重新請求"

"1111request=== type:second token:2"

"重新請求"

"1111request=== type:third token:2"

"重新請求"

"1111request=== type:four token:2"

"重新請求"

"1111request=== type:five token:2"

"2222response===type:refreshtoken token:2"

"2222response===type:second token:2"

"2222response===type:third token:2"

"2222response===type:four token:2"

"2222response===type:five token:2"

"0000callapi=== type:six token:2"

"1111request=== type:six token:2"

"2222response===type:six token:2"

不定期更新部落格

也算是乙個真正程式設計生涯的起點,聽說大神都有自己的部落格。csdn部落格主要是作為乙個詳細的記錄場所,類似log的verbose檔,細緻入微,無孔不入,因此可能更新頻率較高,質量也相對較低。我的意思是將csdn這裡的部落格作為日後更加精煉的部落格 比如個人blog站或者github pages 的...

C STL 不定期更新

一 set set的特性是,所有元素都會根據元素的鍵值自動排序,set的元素不像map那樣可以同時擁有實值 value 和鍵值 key set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素有相同的鍵值。include初始化 int arr 5 set iset arr,arr 5 或者只定義...

MySql命令(不定期更新)

show databases 檢視資料庫 create database car 建立資料庫 use car 進入資料庫 show tables 檢視表 create tables mycar 建立表create table if not exists love mycar 如何不存在就建立表 de...