1、Promise是接口
鸿蒙sdk提供的ProPromise版本有点多,是泛型接口,用interface修饰,官网给出的解释是“Represents the completion of an asynchronous operation”,翻译大概意思是:异步操作的完成的处理,总共两回调方法then和catch,api如下:
2、Promise有构造函数PromiseConstructor
鸿蒙提供的sdk源码结构如有:interface修饰的PromiseConstructor
readonly修饰的属性prototype,类型是是:Promise<any>
new 方法,创建一个新的Promise,两个回调函数作为参数,代码结构如下:
all函数,返回Promise,这时候的Promise是返回结果resolve或者是rejected函数处理的数组,参数是Promises类型的数组。
其他的方法有:
3、Promise实例
Promise主要是resolve 和reject方法
创建一个Promise实例,通过new Promise来创建,当我们啥也不传的时候,数标放在
当我们啥也不传的时候,数遍放上去,提示参数。
这里其实可以传匿名函数,,处理逻辑写在{}内部,这样处理结果就不知道怎么处理, 为了方便处理结果,提供了resolve方法处理成功,reject处理失败,代码如下,
这里红框处的代码是逻辑处理,以后可能是网络请求的代码,也可能是复杂的计算,也可能是文件的读取,总结结果直接扔给resolve,失败就直接走reject,这里异步处理的是耗时的任务。
下面是网络请求的案例,获取天气预报:
区域1是创建了http实例,区域2是http请求,区域1获取请求结果,区域4请求失败。
调用, 直接调用 promiseRandonNumber()方法获取Promise,成功走then,失败走catch,
4、async和await
注意,Promise并不是异步的,如果要是异步的,需要用async关键字修饰使用Promise的方法,为了防止异步出的结果乱序,用await关键修饰耗时处理部分。
下图批量调用获取天气预报的接口
因为每一个Promise的获取都是需要网络请求,也就是意味着耗时和不确定,所以用await来保证获取的顺序正确, async保证代码异步实现
总结:鸿蒙开发中Promise用于接收异步处理的接口,提供了失败和成功的回调方法,处理耗费时间和性能的操作,比如网路请求,io读写,大量的计算等等,异步使用的是async关键字,为了保证顺序,使用await关键字