Izb*_*gen 3 kotlin ktor kotlin-coroutines
我有一个ktor应用程序,它需要像这样的代码中的 multipart 文件:
multipart.forEachPart { part ->
when (part) {
is PartData.FileItem -> {
image = part.streamProvider().readAllBytes()
}
else -> // irrelevant
}
}
Run Code Online (Sandbox Code Playgroud)
Intellij IDEA 标记readAllBytes()为不适当的阻塞调用,因为 ktor 在协程之上运行。如何将此阻塞调用替换为适当的调用?
鉴于 Ktor 作为非阻塞、暂停 IO 框架的声誉,我很惊讶显然FileItem除了阻塞InputStreamAPI 之外别无他物来检索它。鉴于此,您唯一的选择似乎是委托给 IO 调度员:
image = withContext(Dispatchers.IO) { part.streamProvider().readBytes() }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |