Я довольно новичок в Kotlin, и я хочу составить AsyncTask, как и в Scala, чтобы они запускались последовательно (чтобы избежать гонки):
def f(): Future[Unit]
def g(): Future[Unit]
f.map(_ -> g)
или
for {
_ <- f
_ <- g
} yield ()
Для этого я бы хотел как-то расширить моего помощника:
fun doAsync(handler: () -> Unit): AsyncTask<Void, Void, Unit> =
object : AsyncTask<Void, Void, Unit>() {
override fun doInBackground(vararg params: Void?) {
try {
handler()
}
catch (t: Throwable) {
Log.e("AsyncTask", "fail", t)
}
}
}.execute()
Я знаю, что есть что-то вроде onPostExecute
, но я не знаю, как изменить моего помощника, чтобы использовать его.