鸿蒙开发 四十七 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/

CSP-J2023年复赛

P9748 [CSP-J 2023] 小苹果 Code #include<iostream> #include<cmath> using namespace std; int n , ans , sum; int main(){cin >> n;while(n){sum ;if(n % 3 1 && !ans) ans sum;n - ceil(n / 3.0);}cout << sum << " "…

精选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;可能会导致文件…

386. 字典序排数

难度&#xff1a;中等 题目&#xff1a; 给你一个整数 n &#xff0c;按字典序返回范围 [1, n] 内所有整数。 你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。 示例 1&#xff1a; 输入&#xff1a;n 13 输出&#xff1a;[1,10,11,12,13,2,3,4,5,6,7,8,9]示…

华为ENSP用户权限深度解析:构建安全高效的网络管理

在华为ENSP&#xff08;Enterprise Network Simulation Platform&#xff09;用户界面中&#xff0c;用户权限级别是一个重要的概念&#xff0c;它用于限制不同用户访问设备的权限&#xff0c;从而增加设备管理的安全性。以下是对华为ENSP用户界面用户权限级别的详细解释&#…

AI绘图大模型 Stable Diffusion 使用详解

近年来&#xff0c;生成式 AI 技术&#xff0c;特别是 AI 绘图模型的进展令人瞩目。Stable Diffusion 是其中一款开源的大规模图像生成模型&#xff0c;它能够根据文本描述生成高质量的图像&#xff0c;支持从写实风格到卡通、幻想等各种不同的视觉效果。本文将深入介绍如何使用…

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

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

PYTHON使用小结

线程使用 import threadingthread01 Nonedef ThreadFunc(param)xxxxxdef Test()global thread01 thread01 threading.Thread(targetThreadFunc)thread01.daemon True #设置为TRUE,主线程结束后&#xff0c;此线程也会退出&#xff0c; 默认Falsethread01.start()也可以在创…

【VUE】Vue中常用的修饰符

事件修饰符 .stop&#xff1a;阻止事件冒泡。.prevent&#xff1a;阻止默认事件。.capture&#xff1a;使用事件捕获模式。.self&#xff1a;只当事件在该元素本身&#xff08;比如不是子元素&#xff09;触发时触发回调。.once&#xff1a;只触发一次事件。 按键修饰符 .en…

获取每个页面的元素,并写入json

获取每个页面的元素&#xff0c;并写入json 想法&#xff1a;如何去记住每个页面的元素&#xff0c;如何实现不同页面的导航&#xff0c;如何从主页面遍历每一个页面的每一个元素 1.创建数据结构存储 2.树状图正好是我们想要的结构体&#xff1a;创建树状图结构体 3.记录每个页…

【微服务】微服务注册:构建灵活的服务管理机制

目录 引言一、什么是微服务注册&#xff1f;1.1 服务注册中心的作用1.2 服务注册中心的工作原理1.3 示意图 二、常见的微服务注册中心2.1 各注册中心详细对比 三、微服务注册的实现方式3.1 Spring Cloud Netflix Eureka3.2 Consul3.3 Zookeeper3.4 etcd 四、微服务注册的注意事…

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;可以将这套武…