在 Bolts 中,你如何使用 continueWith() 与 continueWithTask()?

In Bolts, how do you use continueWith() vs continueWithTask()?

除了同步与异步之外,它们文档中的差异让我感到困惑。他们 github page 上的示例仍然看起来像是在同步调用延续。

continueWith() Adds a synchronous continuation to this task, returning a new task that completes after the continuation has finished running.

continueWithTask() Adds an asynchronous continuation to this task, returning a new task that completes after the task returned by the continuation has completed.

当您有 return 一个 Task 对象的辅助方法时,您不能使用 continueWith()onSuccess() 因为 Bolts 代码不会将其视为 Task 并等待它的执行。它会将 Task 视为简单数据结果。

基本上,这是行不通的,因为这个链的结果任务是 Task<Task<Void>>:

update().onSuccess(new Continuation<ParseObject, Task<Void>>()
{
  public Task<Void> then(Task<ParseObject> task) throws Exception
  {
    return Task.delay(3000);
  }
}) // this end returns a Task<Task<Void>>

但这会起作用,链会 return a Task<Void>:

update().onSuccessTask(new Continuation<ParseObject, Task<Void>>()
{
  public Task<Void> then(Task<ParseObject> task) throws Exception
  {
    return Task.delay(3000);
  }
}) // this end returns a Task<Void>