私のAPIリクエストにはPromiseKitを使用しています。Objc PromiseKit:約束の範囲内で新しい約束を追加
このシナリオでは、サーバーからオブジェクトIDのリストを取得しています。私は各IDの詳細を取得し、詳細の配列を返す必要があります。かなり一般的なシナリオ。
効果的には、FIRST約束に含まれるFORループ内から約束をチェーンに追加する必要があります。
私は右ドリフトを開始するコードを作成しましたが、チェーンは、約束の第2のチェーン(浅いモデル要求を満たす)が実行される前に完了します。
[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
});
私が達成しようとしていることを行うには良い方法がありますか?おそらく、約束(。)を議決者に追加する方法でしょうか?
です。私はPromiseKitを初めて使っていますが、それはあなたが必要としているようです。 – fishinear