Ho il seguente codice:Come accedere ai risultati della promessa precedente nella catena di offerte di AngularJS?
authService.authenticate()
.then(function (user) {
return Task.all({user: user})
})
.then(function (tasks) {
// How to access user object here?
})
C'è qualche modo incorporato per passare user
oggetto per la seconda funzione then
senza fare qualcosa di simile:
var user2 = null;
authService.authenticate()
.then(function (user) {
user2 = user
return Task.all({user: user})
})
.then(function (tasks) {
// Use user2 here
})
o questo:
authService.authenticate()
.then(function (user) {
var defer = $q.defer()
Task.all({user: user}).then(function (tasks) {
return defer.resolve(user, tasks)
})
return defer.promise
})
.then(function (user, tasks) {
// Use user2 here
})
o annidandoli chiamando il secondo then
direttamente su Task.all
(in questo modo avrei l'oggetto user
disponibile tramite chiusura)? Annidarli è esattamente quello che sto cercando di evitare.
Grazie, ma questo è il terzo caso di cui parlavo nella mia interrogazione - nidificazione loro :) Sto cercando di evitarlo, perché ho appena mostrato un caso semplificato - nel codice reale ci sono ancora alcune promesse, quindi nidificarle sarebbe come usare i callback. – szimek
hmm ... sì, hai ragione. Il fatto è che sto usando questo stile nidificato nel mio codice, e il codice è davvero molto grande ... Il livello di nidificazione non è davvero così grande. Inoltre, la sintassi Coffeescript aiuta molto;) –
Sto usando anche CoffeeScript, quindi proverò ad annidarli e vedere come appare. Anche se non sono esattamente sicuro di come funziona la gestione degli errori in caso di promesse nidificate ... gli errori di – szimek