kotlin - 是否可以执行正在进行的工作
问题描述
我有一个像下面这样的工作
job = GlobalScope.launch {
delay(5000)
runOnUiThread {
some unwanted code
}
}
该作业将等待 5 秒执行。并在我打电话的 5 秒前取消它
job?.cancel()
现在,有没有办法在 5 秒之前执行这项工作?
我正在寻找类似的东西,job?.forceExecute.ignoreDelays
或者job?.forceExecute.ignoreDelay("FirstDelay")
是否有类似名称的选项delay(5000,"FirstDelay")
这对我避免样板代码很有帮助。
解决方案
有没有办法在 5 秒之前执行这项工作?
回答
使用嵌套job
+协程cancellation
尝试这个
job = GlobalScope.launch {
delayJob = GlobalScope.launch { delay(5000) }
delayJob.join()
runOnUiThread {
some unwanted code
}
}
// if you want ignore delay
delayJob.cancel()
推荐阅读
- python - 错误:Series 的真值不明确
- python - 从 json 文件传递 mongodb 查询以在 python 中执行
- sml - SML: Operator ```::``` 是正确的联想,应该用作 ```
:: - ```?
- c++ - C ++中的双冒号是什么意思?
- mql5 - 从 MQL5 中的 csv 文件计算数组的 RSI?
- mobile - 如何在 DialogFlow Mobile 平台中设置基于时间访问的响应消息?
- python - AWS Lambda 提取理解记录数据
- python - 如何调试 OSError:[Errno 22] Anki(开源闪存卡应用)插件 Morphman 的无效参数错误
- mysql - SQL中是否总是需要ID列?
- javascript - 将进度条添加到 div