在go中封裝future物件處理非同步結果

2021-08-21 14:27:43 字數 873 閱讀 8564

在go中,有了協程和chan,就能輕鬆而優雅的實現很多模式。

而引入future的思想可以解放思維。future是乙個物件,擁有setresult和getresult兩個方法。在呼叫getresult的時候,會阻塞並等待setresult,一定時間後超時返回nil。

此時程式設計模型變為三段式:啟動並行任務傳入future,做點其它的事,收集future的結果。嗨的飛起。

其它的不說了,看注釋吧。

package utils

import (

"sync"

"time")/*

future 是乙個未來的任務的抽象。和python裡的那個有點類似。

在非同步任務中setresult,在getresult的時候會等待result生成,或者超時。

使用姿勢:

tasks := make(*utils.future, 0)

for i := 0; i < 10; i++ (i)

}for _, item := range tasks else }*/

type future struct

resultchan chan

inte***ce{}

l sync.mutex

}func (f *future) getresult() inte***ce{}

select

}func (f *future) setresult(result inte***ce{})

f.resultchan <- result

close(f.resultchan)

}func newfuture() *future ,1),

}}

在vue中封裝axios

將 axios 新增到vue的原型中 例項物件可以直接使用原型物件中的屬性或方法 所有的元件都是vue的例項 說明 只要是像 axios 這樣的第三方庫 與vue沒有任何關係 都應該通過這種方式來統一匯入 然後在元件中就用this.http代替axios 然後在元件的路徑可以寫成這樣 只要配置了攔擊...

物件導向中 封裝的理解

封裝是保證軟體部件具有優良的模組性的基礎,封裝的目標就是要實現軟體部件的 高內聚 低耦合 防止程式相互依賴性而帶來的變動影響。在物件導向的程式語言中,物件是封裝 的最基本單位,物件導向的封裝比傳統語言的封裝更為清晰 更為有力。物件導向的封裝就 是把描述乙個物件的屬性和行為的 封裝在乙個 模組 中,也...

在dll中delphi中封裝窗體

dll工程library formdll uses sysutils,classes,forms,dllform in dllform.pas dllfrom2 in dllfrom2.pas begin end.dll單元檔案一 unit dllform inte ce uses windows,...