6

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

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.

4

1 回答 1

5

当您有返回Task对象的辅助方法时,您不能使用continueWith()onSuccess()因为 Bolts 代码不会将其视为 aTask并等待其执行。它将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>>

但这将起作用,并且链将返回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>
于 2015-08-08T22:19:32.907 回答