在 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>
除了同步与异步之外,它们文档中的差异让我感到困惑。他们 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>