我正在使用PromiseKit来简化我的 API 请求。
在这种情况下,我从服务器获取对象 ID 列表。然后我需要获取每个 ID 的详细信息,并返回一个详细信息数组。相当常见的场景。
实际上,我需要从包含在 FIRST 承诺中的 FOR 循环中向承诺链添加承诺。
我创建的代码开始向右偏移,但在第二个承诺链(填充浅模型请求)可以执行之前,链就完成了。
[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
});
有没有更好的方法来做我想要完成的事情?也许一种用解析器附加承诺(.then)的方法?