[英]Perform network task in context of Dispatcher.Main
根據幫助,長網絡任務應該在 Dispatcher.IO 的上下文中執行。
但是為什么不能像在 Dispatcher.Main 上下文中一樣使用暫停 function 呢? 線程本身並沒有被阻塞,所以我們預計代碼會出現任何問題,例如:
GlobalScope.launch(Dispatchers.Main) {
val client = HttpClient(Android)
var data: String = client.get('http://example.com')
}
假設get
是暫停 function 需要很多時間。
謝謝。
你就在這里。 您可以在Dispatchers.Main
中發出該網絡請求。
這似乎是一個常見的誤解,僅僅因為 IO 正在由暫停 function 執行,您必須在Dispatchers.IO
中調用它。
按照慣例,掛起函數不會阻塞調用線程,並且如果需要,在Dispatchers.IO
內部會阻塞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.