一、概述
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
网友评论