AnyPromise не срабатывает - PullRequest
0 голосов
/ 31 января 2020

Я недавно пытался обновить приложение, которое использовало PMKPromiseKit, до более новой версии AnyPromise, и я столкнулся с проблемой Promises, не решаемой.

Проблема связана с .then, из-за того, что он не попадает в обещание.

 [self updateCityList].then(^{
    return [self syncCity: city];
}).catch(^(NSError* error){
    //This is a background load; do not present errors to the user
    NSLog(@"Error while loading city or routes: %@", error);
}).ensure(^{
    [self hideLoadingScreen];
});

Запустится updateCityList, но он не войдет в .then для синхронизации c данных города.

UpdateCityList здесь

- (AnyPromise*) sync {
if (self.syncPromise != nil) {
    return self.syncPromise;
}
[self doesDatabaseNeedPurging];
self.syncPromise = [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve){


    NSError* error;
    CBLDatabase* database = [self loadDatabaseWithError: &error];

    if(!database) {
        NSErrorDomain errorDomain = @"com.com.com";
        NSInteger code = 10042;
        @throw [NSError errorWithDomain:errorDomain code:code userInfo:nil];

    }

    NSURL* url = [self databaseURL];
    self.pullReplication = [database createPullReplication: url];

    [[NSNotificationCenter defaultCenter] addObserver: self
                                             selector: @selector(replicationChanged:)
                                                 name: kCBLReplicationChangeNotification
                                               object: self.pullReplication];

    [self.pullReplication start];
}].ensure(^(){
    [self unregisterCurrentReplication];
});
return self.syncPromise;
}

Self.syncPromise - это просто переменная AnyPromise. Кроме того, .ensure также не срабатывает.

Я что-то упустил после рефакторинга кода?

...