Promise

作者: 深海蓝_98db | 来源:发表于2020-08-18 10:23 被阅读0次

一、概述

Promise代表异步执行的结果或者错误信息。其拥有以下三种状态

  • pending 正在处理
  • fulfilled 处理完成得到的结果
  • rejected 发生错误的信息

当状态发生变更后,就无法再次变更其状态。同时promise不限制其订阅者,当状态发生变化后,所有的订阅者都能接收到通知。同时订阅者可以返回另一个promise对象,从而形成管道通信。

二、目标读者

三、内容组成

四、内容

1.创建方式

  • Overivew

主要介绍异步和同步操作的一般创建方式。

  • Topic

    • 1.异步方式
//OC
-(FBLPromise<NSString *> *)customAsyncMethod {
    FBLPromise *promise = [FBLPromise onQueue:self.onQueue async:^(FBLPromiseFulfillBlock  _Nonnull fulfill, FBLPromiseRejectBlock  _Nonnull reject{
        Bool isTrue = YES;
        if (isTrue) {
            fulfill(@"Custom Resulte");
        }else {
            reject(error);
        }
        //reject
    }];
    return promise;
}
//Swift
let promise = Promise<Int> { fulfill, reject in
    let vail = true
    if vail {
        fulfil(12)
    }else {
        reject(error)
    }
}
  • 同步方式

2.Await

  • Overview
    卡主当前线程进行等待,等待当前传进来的 promise 执行完毕,才会解锁,用的是信号量,记住是卡主当前线程,这个方法在用的时候要小心。
    使用该操作,可以同步等待在不同线程上执行的promise。该语法与ES8中async/await的使用时类似的
  • Topic
  • RalationShip

Reference:
iOS中的Promise
https://juejin.im/post/6844903825405378574#heading-17
iOS promise 设计模式,google promises 源码分析
https://www.jianshu.com/p/854487560e9f
iOS中的Promise
https://juejin.im/post/6844903825405378574#heading-9

相关文章

网友评论

      本文标题:Promise

      本文链接:https://www.haomeiwen.com/subject/byyhjktx.html