Ответ от разработчика PromiseKit на Github :
- (AnyPromise *) attempt:(NSUInteger) maximumRetryCount delayBeforeRetry:(NSTimeInterval) delay provider:(AnyPromise* (^)()) provide {
__block NSUInteger attempts = 0;
AnyPromise *(^attempt)() = ^{
attempts++;
return provide().catch(^(id error) {
if (attempts >= maximumRetryCount) @throw error;
return PMKAfter(delay).then(attempt);
});
};
return attempt();
}
Тогда, если у вас есть такой метод:
- (AnyPromise *) myPromise {
return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) {
...
resolve(nil) / resolve (error);
}];
}
Позвони с
[self attempt:3 delayBeforeRetry:2 provider:^{ return [self myPromise]; }]