2015-06-24 12 views
6

Ho 2 chiamate http che restituiscono promesse ma la prima è facoltativa. Credo di dover prima creare una promessa usando $q.defer() ma mi manca qualcosa.Prima promessa opzionale nella catena angolare

Ecco il mio tentativo non lavoro:

var p = $q.defer(); 
if (condition) { 
    p = p.then(doOptionalFirst()); 
} 
return p.then(doOther()); 

Qual è la sintassi corretta per concatenare questi 2 chiamate con il primo è facoltativa?

risposta

5

Utilizzare $q.when (o $q.resolve con AngularJS 1.4.1) per creare una promessa già risolta.

var p = $q.resolve(); 
if (condition) { 
    p = p.then(doOptionalFirst); 
} 
return p.then(doOther); 

Se si utilizza una differita, è necessario catena al .promise e poi risolvere il differita al momento opportuno. In questo caso puoi considerare che se condition è vero il differimento viene automaticamente risolto. In questo modo puoi saltare qualche altro codice potenzialmente confuso semplicemente usando una promessa già risolta.

Problemi correlati