Używam PromiseKit po prostu moje żądania API.Objc PromiseKit: Dodaj nowe obietnice w ramach obietnicy
W tym scenariuszu pobieram listę identyfikatorów obiektów z serwera. Muszę następnie pobrać szczegóły każdego ID i zwrócić tablicę szczegółów. Dość powszechny scenariusz.
Skutecznie, muszę dodać obietnice do łańcucha obietnicy z pętli FOR, która jest zawarta w PIERWSZEJ obietnicy.
Utworzyłem kod, który zaczyna dryfować w prawo, ale łańcuch kończy się, zanim zostanie zrealizowany drugi łańcuch obietnic (wypełnienie płytkich wniosków modelowych).
[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
});
Czy jest lepszy sposób na robienie tego, co próbuję osiągnąć? Być może sposób na dołączenie obietnicy (.then) za pomocą przelicznika?
Wystarczy popatrzeć na 'kiedy': http://promisekit.org/when/. Jestem nowy w PromiseKit, ale wygląda na to, że tego właśnie potrzebujesz. – fishinear