2015-07-30 15 views
5

Poza synchronizacją kontra asynchronizacja różnice w ich dokumentacji są dla mnie mylące. Przykłady na ich github page nadal wyglądają tak, jakby kontynuacje były nazywane synchronicznie.W Bolts, w jaki sposób używać continueWith() vs continueWithTask()?

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.

Odpowiedz

3

Kiedy masz metody pomocnika, które zwracają Task obiektu, nie można używać continueWith() lub onSuccess() ponieważ kod Śruby nie będą traktować go jako Task i czekać na jego realizację. Byłby traktowany Task jako prosty wynik danych.

Zasadniczo, to nie będzie działać, ponieważ powstająca Zadaniem tej sieci jest 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>> 

Ale to będzie działać, a łańcuch zwróci 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> 
Powiązane problemy