十念 发表于 2024-6-21 18:08:40

鸿蒙ArkTS实战开发:异步并发 (Promise和async/await)

Promise和async/await提供异步并发能力,是标准的JS异步语法。异步代码会被挂起并在之后继承执行,同一时间只有一段代码执行,适用于单次I/O任务的场景开发,例如一次网络哀求、一次文件读写等利用。
异步语法是一种编程语言的特性,允许步伐在执行某些利用时不必等待其完成,而是可以继承执行其他利用。
Promise

Promise是一种用于处置处罚异步利用的对象,可以将异步利用转换为类似于同步利用的风格,以方便代码编写和维护。Promise提供了一个状态机制来管理异步利用的差别阶段,并提供了一些方法来注册回调函数以处置处罚异步利用的成功或失败的效果。
Promise有三种状态:pending(进行中)、fulfilled(已完成)和rejected(已拒绝)。Promise对象创建后处于pending状态,并在异步利用完成后转换为fulfilled或rejected状态。
最基本的用法是通过构造函数实例化一个Promise对象,同时传入一个带有两个参数的函数,通常称为executor函数。executor函数吸收两个参数:resolve和reject,分别体现异步利用成功和失败时的回调函数。例如,以下代码创建了一个Promise对象并模仿了一个异步利用:
const promise: Promise<number> = new Promise((resolve: Function, reject: Function) => {
setTimeout(() => {
const randomNumber: number = Math.random();
if (randomNumber > 0.5) {
    resolve(randomNumber);
} else {
    reject(new Error('Random number is too small'));
}
}, 1000);
}) 上述代码中,setTimeout函数模仿了一个异步利用,并在1秒钟后随机生成一个数字。如果随机数大于0.5,则执行resolve回调函数并将随机数作为参数传递;否则执行reject回调函数并传递一个错误对象作为参数。
Promise对象创建后,可以使用then方法和catch方法指定fulfilled状态和rejected状态的回调函数。then方法可接受两个参数,一个处置处罚fulfilled状态的函数,另一个处置处罚rejected状态的函数。只传一个参数则体近况态改变就执行,不区分状态效果。使用catch方法注册一个回调函数,用于处置处罚“失败”的效果,即捕获Promise的状态改变为rejected状态或利用失败抛出的非常。例如:
import { BusinessError } from '@ohos.base';

promise.then((result: number) => {
console.info(`Random number is ${result}`);
}).catch((error: BusinessError) => {
console.error(error.message);
}); 上述代码中,then方法的回调函数吸收Promise对象的成功效果作为参数,并将其输出到控制台上。如果Promise对象进入rejected状态,则catch方法的回调函数吸收错误对象作为参数,并将其输出到控制台上。
async/await

async/await是一种用于处置处罚异步利用的Promise语法糖,使得编写异步代码变得更加简单和易读。通过使用async关键字声明一个函数为异步函数,并使用await关键字等待Promise的剖析(完成或拒绝),以同步的方式编写异步利用的代码。
async函数是一个返回Promise对象的函数,用于体现一个异步利用。在async函数内部,可以使用await关键字等待一个Promise对象的剖析,并返回其剖析值。如果一个async函数抛出非常,那么该函数返回的Promise对象将被拒绝,并且非常信息会被传递给Promise对象的onRejected()方法。
下面是一个使用async/await的例子,其中模仿了一个异步利用,该利用会在3秒钟后返回一个字符串。
async function myAsyncFunction(): Promise<void> {
const result: string = await new Promise((resolve: Function) => {
    setTimeout(() => {
      resolve('Hello, world!');
    }, 3000);
});
console.info(result); // 输出: Hello, world!
}

myAsyncFunction(); 在上述示例代码中,使用了await关键字来等待Promise对象的剖析,并将其剖析值存储在result变量中。
必要注意的是,由于要等待异步利用完成,因此必要将整个利用包在async函数中。除了在async函数中使用await外,还可以使用try/catch块来捕获异步利用中的非常。
async function myAsyncFunction(): Promise<void> {
try {
    const result: string = await new Promise((resolve: Function) => {
      resolve('Hello, world!');
    });
} catch (e) {
    console.error(`Get exception: ${e}`);
}
}

myAsyncFunction(); 最后

有许多小伙伴不知道学习哪些鸿蒙开发技术?不知道必要重点把握哪些鸿蒙应用开发知识点?而且学习时频仍踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习黑白常有必要的。 
为了能够资助大家快速把握鸿蒙(HarmonyOS NEXT)应用开发技术知识。在此给大家分享一下我联合鸿蒙最新资料整理出来的鸿蒙南北向开发学习路线以及整理的最新版鸿蒙学习文档资料。
这份鸿蒙(HarmonyOS NEXT)资料包罗了鸿蒙开发必把握的焦点知识要点,内容包罗了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
希望这一份鸿蒙学习资料能够给大家带来资助,有必要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
如果你是一名有履历的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员,可以直接领取这份资料
 获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
鸿蒙(HarmonyOS NEXT)最新学习路线

https://img-blog.csdnimg.cn/direct/2636417e951b4ec9b5a1334224fcd239.png


[*]  HarmonOS基础技能
https://img-blog.csdnimg.cn/direct/72fd2509a44e4bf98bbe1f983b5a4ff6.png


[*]HarmonOS就业必备技能 https://img-blog.csdnimg.cn/direct/18f024bc5f0a4353912996010ed6cc81.png
[*] HarmonOS多媒体技术
https://img-blog.csdnimg.cn/direct/b9ead66dadc245fdadce4d77feb47a28.png


[*]鸿蒙NaPi组件进阶
https://img-blog.csdnimg.cn/direct/0744fbd1454f41b0a3f605fb4a51f5f3.png


[*]HarmonOS高级技能
https://img-blog.csdnimg.cn/direct/743b668910224b259a5ffe804fa6d0db.png


[*]初识HarmonOS内核 https://img-blog.csdnimg.cn/direct/9e79fbdc4bb74f179584c5552aa547d5.png
[*]实战就业级设备开发
https://img-blog.csdnimg.cn/direct/d2012fa9c57a400da25a2182a38cbdcb.png
 有了路线图,怎么能没有学习资料呢,小编也预备了一份团结鸿蒙官方发布笔记整理收纳的一套体系性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包罗:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
《鸿蒙 (OpenHarmony)开发入门教学视频》

https://img-blog.csdnimg.cn/direct/ad3cb3acb77e470fa93ac0471d4e7f0f.png
《鸿蒙生态应用开发V2.0白皮书》

https://img-blog.csdnimg.cn/img_convert/bf439a395d3ce8e8cf3dee8e8b75e3a9.jpeg
《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建
https://img-blog.csdnimg.cn/img_convert/aff76dc1c3c84c360a9ff825908b2e98.png
 《鸿蒙开发基础》



[*]ArkTS语言
[*]安装DevEco Studio
[*]运用你的第一个ArkTS应用
[*]ArkUI声明式UI开发
[*].……
https://img-blog.csdnimg.cn/img_convert/2b8f290e39e52efb0a5709be96ff82ea.png
 《鸿蒙开发进阶》



[*]Stage模型入门
[*]网络管理
[*]数据管理
[*]电话服务
[*]分布式应用开发
[*]通知与窗口管理
[*]多媒体技术
[*]安全技能
[*]任务管理
[*]WebGL
[*]国际化开发
[*]应用测试
[*]DFX面向未来筹划
[*]鸿蒙体系移植和裁剪定制
[*]……
https://img-blog.csdnimg.cn/img_convert/06651107041ecdf7d26caed596ac4302.png
《鸿蒙进阶实战》



[*]ArkTS实践
[*]UIAbility应用
[*]网络案例
[*]……
https://img-blog.csdnimg.cn/img_convert/42bc7f572540ddbbd4d38e5bf3148fce.png
 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料
总结

总的来说,华为鸿蒙不再兼容安卓,对中年步伐员来说是一个挑战,也是一个时机。只有积极应对变化,不断学习和提拔自己,他们才气在这个变革的时代中立于不败之地。 
https://img-blog.csdnimg.cn/direct/1ba8cc3b600f4c5a9a90695e8b090b3e.png


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 鸿蒙ArkTS实战开发:异步并发 (Promise和async/await)