0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙OS开发实例:【ArkTS类库异步并发async/await】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-02 20:57 次阅读

async/await是一种用于处理异步操作的Promise语法糖,使得编写异步代码变得更加简单和易读。通过使用async关键字声明一个函数为异步函数,并使用await关键字等待Promise的解析(完成或拒绝),以同步的方式编写异步操作的代码。

async函数是一个返回Promise对象的函数,用于表示一个异步操作。在async函数内部,可以使用await关键字等待一个Promise对象的解析,并返回其解析值。如果一个async函数抛出异常,那么该函数返回的Promise对象将被拒绝,并且异常信息会被传递给Promise对象的onRejected()方法。

下面是一个使用async/await的例子,其中模拟了一个异步操作,该操作会在3秒钟后返回一个字符串

async function myAsyncFunction() {
  const result = await new Promise((resolve) = > {
    setTimeout(() = > {
      resolve('Hello, world!');
    }, 3000);
  });
  console.info(String(result)); // 输出: Hello, world!
}

myAsyncFunction();

在上述示例代码中,使用了await关键字来等待Promise对象的解析,并将其解析值存储在result变量中。

搜狗高速浏览器截图20240326151547.png

需要注意的是,由于要等待异步操作完成,因此需要将整个操作包在async函数中。除了在async函数中使用await外,还可以使用try/catch块来捕获异步操作中的异常。
更多鸿蒙技术已更新在

async function myAsyncFunction() {
  try {
    const result = await new Promise((resolve) = > {
      resolve('Hello, world!');
    });
  } catch (e) {
    console.error(`Get exception: ${e}`);
  }
}

myAsyncFunction();

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4307

    浏览量

    62433
  • 鸿蒙
    +关注

    关注

    57

    文章

    2313

    浏览量

    42748
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    188

    浏览量

    4371
收藏 人收藏

    评论

    相关推荐

    ArkTS语言基础-解析

    ArkTS语言基础是HarmonyOS系统上为应用开发者提供的常用基础能力,主要包含能力如下图所示。 图1 ArkTS语言基础
    发表于 02-20 16:44

    鸿蒙原生应用开发-ArkTS语言基础单次I/O任务开发

    Promise和async/await提供异步并发能力,适用于单次I/O任务的场景开发,本文以使用异步
    发表于 03-04 14:07

    鸿蒙原生应用开发-ArkTS语言基础概述

    ArkTS语言基础是HarmonyOS系统上为应用开发者提供的常用基础能力,主要包含能力如下图所示。 1.提供异步
    发表于 03-05 15:42

    鸿蒙原生应用开发-ArkTS语言基础异步并发简述async/await

    async/await是一种用于处理异步操作的Promise语法糖,使得编写异步代码变得更加简单和易读。通过使用async关键字声明一个函数
    发表于 03-06 14:44

    鸿蒙原生应用开发-ArkTS语言基础异步并发简述Promise

    Promise和async/await提供异步并发能力,是标准的JS异步语法。异步代码会被挂起并
    发表于 03-07 15:46

    鸿蒙原生应用开发-ArkTS语言基础多线程@Concurrent装饰器校验并发函数

    在使用TaskPool时,执行的并发函数需要使用该装饰器修饰,否则无法通过相关校验。从API version 9开始,该装饰器支持在ArkTS卡片中使用。 装饰器说明 装饰器使用示例 import
    发表于 03-18 10:30

    鸿蒙原生应用开发-ArkTS语言基础多线程I/O密集型任务开发

    使用异步并发可以解决单次I/O任务阻塞的问题,但是如果遇到I/O密集型任务,同样会阻塞线程中其它任务的执行,这时需要使用多线程并发能力来进行解决。 I/O密集型任务的性能重点通常不在于CPU的处理
    发表于 03-21 14:57

    HarmonyOS如何使用异步并发能力进行开发

    策略进行优化和开发ArkTS支持异步并发和多线程并发。 ● Promise和async/
    发表于 09-22 17:35

    HarmonyOS语言基础开发指南上线啦!

    基础开发指南为HarmonyOS应用开发者提供了常用的基础能力: ○ 提供异步并发和多线程
    发表于 10-18 16:36

    鸿蒙 OS 应用开发初体验

    的 IDE、鸿蒙生态的开发语言 ArkTS,通过模拟器运行起来了鸿蒙 OS 版 HelloWorld。对于已经有移动
    发表于 11-02 19:38

    鸿蒙OS实例:同步获取应用配置的【versionCode和versionName】

    鸿蒙大部分提供的方法都是异步的,所以可以使用asyncawait 转换,可以跟同步方法一样的使用...只是要注意这个会阻塞
    的头像 发表于 03-27 16:20 463次阅读

    鸿蒙OS开发实例:【ArkTS多线程I/O密集型任务开发

    使用异步并发可以解决单次I/O任务阻塞的问题,但是如果遇到I/O密集型任务,同样会阻塞线程中其它任务的执行,这时需要使用多线程并发能力来进行解决。 I/O密集型任务的性能重点通常不在于CPU
    的头像 发表于 04-01 16:32 461次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>类</b><b class='flag-5'>库</b>多线程I/O密集型任务<b class='flag-5'>开发</b>】

    鸿蒙OS开发实例:【ArkTS多线程@Concurrent装饰器校验并发函数】

    在使用TaskPool时,执行的并发函数需要使用该装饰器修饰,否则无法通过相关校验。从API version 9开始,该装饰器支持在ArkTS卡片中使用。
    的头像 发表于 04-02 14:45 596次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>类</b><b class='flag-5'>库</b>多线程@Concurrent装饰器校验<b class='flag-5'>并发</b>函数】

    鸿蒙OS开发实例:【ArkTS异步并发简述Promise】

    Promise和async/await提供异步并发能力,是标准的JS异步语法。异步代码会被挂起并
    的头像 发表于 04-02 18:37 927次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>类</b><b class='flag-5'>库</b><b class='flag-5'>异步</b><b class='flag-5'>并发</b>简述Promise】

    鸿蒙OS开发实例:【ArkTS单次I/O任务开发

    Promise和async/await提供异步并发能力,适用于单次I/O任务的场景开发,本文以使用异步
    的头像 发表于 04-02 21:03 301次阅读
    <b class='flag-5'>鸿蒙</b>原<b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>类</b><b class='flag-5'>库</b>单次I/O任务<b class='flag-5'>开发</b>】