如何在延续任务中返回失败的任务结果?

问题描述

我在 Kotlin 中使用 Google 的 Task API 并且面临以下情况:

...
val deleteTask = getItem(id)?.continueWithTask { task ->
    if (task.isSuccessful)
        task.result?.toObject(ItemModel::class.java)?.let { deleteFiles(it.media) }
}

deleteTask?.continueWithTask { task ->
    if (task.isSuccessful) doSomething()
} ?: doSomething()
...

其中 getItem(id) 返回 Firebase.firestore 获取任务 (Task<DocumentSnapshot>?) 和 deleteFiles(it.media) 返回 Firebase.storage 删除任务 (Task<Void>?)。 doSomething() 应在以下情况下调用:删除任务成功或根本不需要删除(deleteFiles(it.media) 将返回 null)。

问题是当 get 任务失败时:在这种情况下,我希望 deleteTask 是一个非空任务(因为 null 对我来说是一个有效的案例,如解释)和 isSuccessful = false (所以 doSomething() 不会被调用),但我找不到创建虚拟失败任务的方法。我想过返回 get 任务 (if (task.isSuccessful) ... else task),但它给出了“类型不匹配”错误(这是有道理的,因为 Task<DocumentSnapshot>?Task<Void>? 是不同的类型......)。>

那么,如何在延续任务中返回失败的任务结果?

(有关为什么我需要这个的更多信息:here我用更多细节解释了我的具体案例,但正如我从那里得到的答案所理解的那样,细节只会分散问题的注意力......)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)