OCPromise 0.1.6

OCPromise 0.1.6

Yang-Ran-1988 维护。



OCPromise 0.1.6

  • 杨然

OCPromise

badge-languages

安装

OCPromise 可通过 CocoaPods 获得。要安装它,只需将以下行添加到 Podfile 中

pod 'OCPromise'

手动

OCPromise 初始化

初始化一个 promise 对象有两种方式

OCPromise *promise1 = Promise(^(resolve  _Nonnull resolve, reject  _Nonnull reject) {
    resolve(@"great");
});

OCPromise *promise2 = function(^OCPromise * _Nullable(id  _Nonnull value) {
    return Promise(^(resolve  _Nonnull resolve, reject  _Nonnull reject) {
        resolve(value);
    });
});

promise2 将收到最后一个 promise 的解决值,因此 promise2 不能是链的头部。

如何使用 promise 链式调用

promise1
.then(promise2)
.then(function(^OCPromise * _Nullable(id  _Nonnull value) {
    NSLog(@"got value %@", value);
    return nil;
})).catch(function(^id _Nullable(id  _Nullable value) {
    NSLog(@"catch error");
    return nil;
})).finally(^{
    NSLog(@"finally");
});

OCPromise.all

OCPromise *tast1 = Promise(^(resolve  _Nonnull resolve, reject  _Nonnull reject) {
    resolve(@"task1");
});

OCPromise *task2 = Promise(^(resolve  _Nonnull resolve, reject  _Nonnull reject) {
    resolve(@"task2");
});

OCPromise.all(@[tast1, task2]).then(function(^OCPromise * _Nullable(NSArray * values) {
    NSLog(@"got value %@", values);
    return nil;
}));

OCPromise.race

OCPromise.race(@[tast1, task2]).then(function(^OCPromise * _Nullable(id  _Nonnull value) {
    NSLog(@"got value %@", value);
    return nil;
}));

map

tast1.map(^id _Nullable(id  _Nonnull value) {
    return [value stringByAppendingString:@" maped"];
}).then(function(^OCPromise * _Nullable(id  _Nonnull value) {
    NSLog(@"got value %@", value);
    return nil;
}));

OCPromise.map(@[tast1, task2], ^id _Nullable(id  _Nonnull value) {
    return [value stringByAppendingString:@" maped"];
}).then(function(^OCPromise * _Nullable(NSArray *values) {
    NSLog(@"got value %@", values);
    return nil;
}));

deliverOnMainThread

tast1.deliverOnMainThread(^(id  _Nonnull value) {
    NSLog(@"got value on main thread %@", value);
});

作者

杨然, [email protected]