Sto usando PromiseKit semplicemente alle mie richieste API.Objc PromiseKit: aggiungi nuove promesse dall'interno di una promessa
In questo scenario, sto recuperando un elenco di ID di oggetti dal server. Devo quindi recuperare i dettagli per ciascun ID e restituire una serie di dettagli. Scenario abbastanza comune.
In effetti, ho bisogno di aggiungere promesse alla catena di promesse da un ciclo FOR che è contenuto nella PRIMA promessa.
Ho creato il codice che inizia a deviare a destra, ma la catena si completa prima che la seconda catena di promesse (riempire richieste di modelli superficiali) possa essere eseguita.
[PMKPromise promiseWithResolver:^(PMKResolver resolve) {
// Fetch an array of object IDs (shallow objects)
[APIManager fetchObjectListWithCompletion:^(NSArray *resultObjects, NSError *error) {
resolve(error ?: resultObjects[0]);
}];
}].then(^(NSArray *objects){
// Fill each shallow object (query details)
PMKPromise *fetches = [PMKPromise promiseWithValue:nil];
for(id model in objects) {
fetches.then(^{
[APIManager fillShallowObject:model withCompletion:^(NSArray *resultObjects, NSError *error) {
// resolve?
}];
});
}
// Return promise that contains all fill requests
return fetches;
})].then(^{
// This should be executed after all fill requests complete
// Instead it's executed after the initial ID array request
});
C'è un modo migliore per fare ciò che sto cercando di realizzare? Forse un modo per aggiungere una promessa (.) A un risolutore?
Date un'occhiata al 'quando': http://promisekit.org/when/. Sono nuovo a PromiseKit, ma sembra che sia ciò di cui hai bisogno. – fishinear