鸿蒙开发 四十七 Promise async await

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关键字

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全球知名度最高的华人改名大师颜廷利:世界公认的三大哲学家思想家

颜廷利教授&#xff0c;一位享誉全球的思想巨擘与现代国学泰斗&#xff0c;以其卓越的哲学地位和深远的影响力&#xff0c;成为当代思想界的璀璨明星。他的哲学思想深邃而广博&#xff0c;不仅涵盖了人的全面发展、自然社会的深度融合&#xff0c;更在教育理念上独树一帜&#…

2.2机器学习--逻辑回归(分类)

目录 1.算法介绍 2.算法原理 3. API 介绍 4.代码示例 本章节我们来学习线性分类问题&#xff0c;在有监督学习中&#xff0c;最主要的两种学习任务是 回归&#xff08;regression&#xff09; 和 分类&#xff08;classification&#xff09;&#xff0c;而其中线性回归和线…

JR_T0213—2021 金融网络安全 Web应用服务安全测试通用规范.pdf

预览 内容太多&#xff0c;自己下载看吧 https://www.mhtsec.com/667/

精选20个爆火的Python实战项目(含源码),直接拿走不谢!

今天给大家介绍20个非常实用的Python项目&#xff0c;帮助大家更好的学习Python。 完整版Python项目源码&#xff0c;【点击这里】领取&#xff01; ① 猜字游戏 import random def guess_word_game(): words ["apple", "banana", "cherry&quo…

1. 安装框架

一、安装 Laravel 11 框架 按照官方文档直接下一步安装即可 1. 安装步骤 2. 执行数据库迁移 在.env文件中提前配置好数据库连接信息 php artisan migrate二、安装 Filament3.2 参考 中文文档 进行安装 1. 安装 拓展包 composer require filament/filament:"^3.2" -W…

双十一有啥不能错过的好物清单?真心为你带来2024最值好物分享!

双十一购物狂欢节即将到来&#xff0c;许多朋友们都在期待着这一天&#xff0c;希望能够在这个特别的日子里为自己添置一些日常用品。今天&#xff0c;我特意为大家精心挑选了五款在生活中都会用得到的好物&#xff0c;希望能够帮助大家在双十一期间做出明智的选择。 最值好物…

【java面经thinking】四

目录 悲观锁synchronized synchronized的用法 只能锁引用类型 对象的内存布局&#xff08;引用型&#xff09; JDK1.6之前的锁----重量级锁 1.6之后---偏向锁&#xff0c;轻量级锁(自适应自旋锁) 偏向锁 轻量级锁 区别 某些场景使用重量级锁的原因 synchronized是不公…

电脑基础知识:mfc110.dll丢失的解决方法

1.mfc110.dll 丢失常见原因 mfc110.dll 文件的丢失或损坏是Windows系统中常见的问题&#xff0c;它可能由多种原因引起&#xff0c;以下是一些主要的因素&#xff1a; 不完全的软件卸载 在卸载程序时&#xff0c;如果相关的 DLL 文件没有被正确移除&#xff0c;可能会导致文件…

ASP.NET Core8.0学习笔记(二十二)——单向导航属性

一、单向导航属性引入 1.双向导航属性存在的问题&#xff1a;数据库中存在一些“基础表”&#xff0c;这些表会被其他各种表来引用。比如有一张User表&#xff0c;另有请假表&#xff08;请假人、审批人&#xff09;、采购表&#xff08;采购员、审核员&#xff09;等多个表的…

H-TCP 的效率和公平性

昨晚带安孩楼下玩耍&#xff0c;用手机 desmos 作了一组 response curve 置于双对数坐标系&#xff1a; 长肥管道的优化思路都很类似&#xff0c;cwnd 增长快一点&#xff1a; BIC TCP&#xff1a;二分查找逼近 capacity&#xff1b;CUBIC TCP&#xff1a;上凸曲线逼近 capa…

C++ -string -常见用法4

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【C】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 &#x1f4a1;前言&#x1f4a1;字符串操作1.c_str 、data -重点⭐1.1函数原型1.2用法 2.copy2.1函数原型2.2用法2.3注意事项 3.find、rfind -重点⭐3.1函数原型3.2用…

华山论剑之Rust的Trait

华山论剑&#xff0c;群雄荟萃&#xff0c;各显神通。武林中人&#xff0c;各有所长&#xff0c;或剑法飘逸&#xff0c;或掌法刚猛&#xff0c;或轻功绝顶。这就好比Rust中的trait&#xff0c;它定义了一种武功套路&#xff0c;而不同的门派、不同的人&#xff0c;可以将这套武…

分布式篇(分布式事务)(持续更新迭代)

一、事务 1. 什么是事务 2. 事务目的 3. 事务的流程 4. 事务四大特性 原子性&#xff08;Atomicity&#xff09; 一致性&#xff08;Consistency&#xff09; 持久性&#xff08;Durability&#xff09; 隔离性&#xff08;Isolation&#xff09; 5. MySQL VS Oracle …

016_基于python+django网络爬虫及数据分析可视化系统2024_kyz52ks2

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

IE11删除hao360主页

欲删 hao.360.com&#xff0c;hao360.mainshe.com 主页&#xff0c;必先删除注册表键&#xff1a; HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\EUPP HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main "Start Page" "Default_Pag…

87. 多边形轮廓Shape(圆弧)

先掌握上节课关于Shape内容&#xff0c;再继续学习本节课关于Shape圆弧的介绍。 圆弧方法.arc() 圆弧方法.arc()使用方式和原来学习过的圆弧曲线ArcCurve整体相似&#xff0c;区别在于圆心定位方式有差异。 圆弧.arc()参数的圆心坐标是相对当前.currentPoint而言,而不是坐标原…

斜视角,视角和入射角

注意分辨率中的2 在&#xff1b;雷达的径向&#xff0c;分辨率(时间)就是脉冲宽度/2

SAP 控制生产订单发料数量不能超过生产订单预留数量

SAP 控制生产订单发料数量不能超过生产订单预留数量 业务场景前台操作1、创建生产订单---CO012、生产订单发料---MIGO3、系统后台配置业务场景 正常生产订单进行投料的根据生产订单组件进行投料,比如生产订单组件数量是100PCS,那在做工单发料的时候MIGO带出的默认发料数量就…

机器学习(MachineLearning)(8)——模型评估与优化

机器学习&#xff08;MachineLearning&#xff09;&#xff08;1&#xff09;——机器学习概述 机器学习&#xff08;MachineLearning&#xff09;&#xff08;2&#xff09;——线性回归 机器学习&#xff08;MachineLearning&#xff09;&#xff08;3&#xff09;——决策树…

Linux_进程控制

一&#xff1a;进程创建 fork()函数创建新进程 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a;…