3

有一个NSManagedObjectContextwith 并发类型NSPrivateQueueConcurrencyType可以使用 PromiseKit 来美化performBlock:^{}/performBlockAndWait:^{}吗?

我的第一个想法是这样写:

- (PMKPromise *)updateModel:(Model *)model
{
    return [PMKPromise new:^(PMKPromiseFulfiller fulfill, PMKPromiseRejecter reject) {
        [_managedContenxtModel performBlock:^{
                //...
                fulfill(...)
        }];
    }];
}

但是,我担心因为 promise 块将在 a 中注册,DISPATCH_QUEUE_CONCURRENT并且如果从不同的线程多次调用updateModel:,则不能保证来自 的块performBlock以正确的顺序注册。

是否有可能发生这种变化?
改用呢performBlockAndWait:^{}

4

1 回答 1

1

您可以dispatch_promise_on与自己创建的并发队列一起使用:

- (PMKPromise *)updateModel:(Model *)model
{
    return dispatch_promise_on(myQ, ^{
        [_managedContenxtModel performBlockAndWait:^{
                //...
        }];
        fulfill(...)
    }];
}

如果这不能回答您的问题,请告诉我,我会尽力提供帮助。

于 2015-04-18T18:36:26.573 回答