簡體   English   中英

在 Dispatcher.Main 的上下文中執行網絡任務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM