用PromiseKit封裝跨執行緒的序列佇列

2021-09-11 13:12:10 字數 947 閱讀 1570

解決的問題:乙個複雜的上層函式,函式內部進行的跨執行緒的呼叫,業務需求想讓函式依次執行(類似乙個動態的callback hell)

例如有這樣乙個原始函式

func

fetch

(_ compeltion: (()

-> void)?)

複製**

先把原始函式的名字改為

func

originalfetch

(_ compeltion: (()

-> void)?)

複製**

再寫乙個新函式,返回乙個promise

func

unlimitedfetch

(_ compeltion: (()

-> void)?) -> promise

originalfetch

}}複製**

宣告乙個promise變數

var fetchpromise: promise

複製**

再寫乙個和原函式一樣簽名的函式,這樣就不會影響外部呼叫

func

fetch

(_ compeltion: (()

-> void)?)

return unlimitedfetch(callback)}}

else

}複製**

原理:每次呼叫的時候,都初始化或者追加乙個promise到fetchpromise的呼叫鏈上,形成類似下面的結構

promise // 第一次呼叫

.then

.then

//...

複製**

大功告成。

ajax跨域請求封裝

開啟乙個ajax請求 第乙個引數是請求的方式 可以是get post 第二個引數是請求的位址 第三個引數是否傳送 ajax.send 向伺服器傳送ajax請求 獲取ajax請求的響應資料 ajax.onreadystatechange function options 呼叫ajax請求是傳遞過來的引...

visio直線交叉相交跨線修改

在使用visio畫流程圖時,經常會遇到兩條直線相交。下面講如何修改使得相交點變成我們想要的方式。可以設定如下 1 全域性直線相交,設定跨線標誌。2 對每條線進行相交跨線設定。一 全域性設定。首先,畫上交叉線。如下圖。選擇直線 格式 行為。如圖 有如下選項 按頁上指定 指對當頁生效,有跨線 從不 全部...

pytorch五 用Variable實現線性回歸

匯入相關包 import torch as t import matplotlib.pyplot as plt 構造資料 def get fake data batch size 8 設定隨機種子數,這樣每次生成的隨機數都是一樣的 t.manual seed 10 產生隨機資料 y 2 x 3,加上...