0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OS開發(fā)實(shí)例:【ArkTS類庫異步并發(fā)async/await】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-02 20:57 ? 次閱讀

async/await是一種用于處理異步操作的Promise語法糖,使得編寫異步代碼變得更加簡單和易讀。通過使用async關(guān)鍵字聲明一個(gè)函數(shù)為異步函數(shù),并使用await關(guān)鍵字等待Promise的解析(完成或拒絕),以同步的方式編寫異步操作的代碼。

async函數(shù)是一個(gè)返回Promise對(duì)象的函數(shù),用于表示一個(gè)異步操作。在async函數(shù)內(nèi)部,可以使用await關(guān)鍵字等待一個(gè)Promise對(duì)象的解析,并返回其解析值。如果一個(gè)async函數(shù)拋出異常,那么該函數(shù)返回的Promise對(duì)象將被拒絕,并且異常信息會(huì)被傳遞給Promise對(duì)象的onRejected()方法。

下面是一個(gè)使用async/await的例子,其中模擬了一個(gè)異步操作,該操作會(huì)在3秒鐘后返回一個(gè)字符串

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

myAsyncFunction();

在上述示例代碼中,使用了await關(guān)鍵字來等待Promise對(duì)象的解析,并將其解析值存儲(chǔ)在result變量中。

搜狗高速瀏覽器截圖20240326151547.png

需要注意的是,由于要等待異步操作完成,因此需要將整個(gè)操作包在async函數(shù)中。除了在async函數(shù)中使用await外,還可以使用try/catch塊來捕獲異步操作中的異常。
更多鴻蒙技術(shù)已更新在

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

myAsyncFunction();

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4262

    瀏覽量

    62236
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2294

    瀏覽量

    42634
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    4346
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ArkTS語言基礎(chǔ)-解析

    ArkTS語言基礎(chǔ)是HarmonyOS系統(tǒng)上為應(yīng)用開發(fā)者提供的常用基礎(chǔ)能力,主要包含能力如下圖所示。 圖1 ArkTS語言基礎(chǔ)
    發(fā)表于 02-20 16:44

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語言基礎(chǔ)單次I/O任務(wù)開發(fā)

    Promise和async/await提供異步并發(fā)能力,適用于單次I/O任務(wù)的場景開發(fā),本文以使用異步
    發(fā)表于 03-04 14:07

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語言基礎(chǔ)概述

    ArkTS語言基礎(chǔ)是HarmonyOS系統(tǒng)上為應(yīng)用開發(fā)者提供的常用基礎(chǔ)能力,主要包含能力如下圖所示。 1.提供異步
    發(fā)表于 03-05 15:42

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語言基礎(chǔ)異步并發(fā)簡述async/await

    async/await是一種用于處理異步操作的Promise語法糖,使得編寫異步代碼變得更加簡單和易讀。通過使用async關(guān)鍵字聲明一個(gè)函數(shù)
    發(fā)表于 03-06 14:44

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語言基礎(chǔ)異步并發(fā)簡述Promise

    Promise和async/await提供異步并發(fā)能力,是標(biāo)準(zhǔn)的JS異步語法。異步代碼會(huì)被掛起并
    發(fā)表于 03-07 15:46

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語言基礎(chǔ)多線程@Concurrent裝飾器校驗(yàn)并發(fā)函數(shù)

    在使用TaskPool時(shí),執(zhí)行的并發(fā)函數(shù)需要使用該裝飾器修飾,否則無法通過相關(guān)校驗(yàn)。從API version 9開始,該裝飾器支持在ArkTS卡片中使用。 裝飾器說明 裝飾器使用示例 import
    發(fā)表于 03-18 10:30

    鴻蒙原生應(yīng)用開發(fā)-ArkTS語言基礎(chǔ)多線程I/O密集型任務(wù)開發(fā)

    使用異步并發(fā)可以解決單次I/O任務(wù)阻塞的問題,但是如果遇到I/O密集型任務(wù),同樣會(huì)阻塞線程中其它任務(wù)的執(zhí)行,這時(shí)需要使用多線程并發(fā)能力來進(jìn)行解決。 I/O密集型任務(wù)的性能重點(diǎn)通常不在于CPU的處理
    發(fā)表于 03-21 14:57

    HarmonyOS如何使用異步并發(fā)能力進(jìn)行開發(fā)

    策略進(jìn)行優(yōu)化和開發(fā)。 ArkTS支持異步并發(fā)和多線程并發(fā)。 ● Promise和async/
    發(fā)表于 09-22 17:35

    HarmonyOS語言基礎(chǔ)開發(fā)指南上線啦!

    基礎(chǔ)開發(fā)指南為HarmonyOS應(yīng)用開發(fā)者提供了常用的基礎(chǔ)能力: ○ 提供異步并發(fā)和多線程
    發(fā)表于 10-18 16:36

    鴻蒙 OS 應(yīng)用開發(fā)初體驗(yàn)

    的 IDE、鴻蒙生態(tài)的開發(fā)語言 ArkTS,通過模擬器運(yùn)行起來了鴻蒙 OS 版 HelloWorld。對(duì)于已經(jīng)有移動(dòng)
    發(fā)表于 11-02 19:38

    鴻蒙OS實(shí)例:同步獲取應(yīng)用配置的【versionCode和versionName】

    鴻蒙大部分提供的方法都是異步的,所以可以使用asyncawait 轉(zhuǎn)換,可以跟同步方法一樣的使用...只是要注意這個(gè)會(huì)阻塞
    的頭像 發(fā)表于 03-27 16:20 ?446次閱讀

    鴻蒙OS開發(fā)實(shí)例:【ArkTS多線程I/O密集型任務(wù)開發(fā)

    使用異步并發(fā)可以解決單次I/O任務(wù)阻塞的問題,但是如果遇到I/O密集型任務(wù),同樣會(huì)阻塞線程中其它任務(wù)的執(zhí)行,這時(shí)需要使用多線程并發(fā)能力來進(jìn)行解決。 I/O密集型任務(wù)的性能重點(diǎn)通常不在于CPU
    的頭像 發(fā)表于 04-01 16:32 ?399次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫</b>多線程I/O密集型任務(wù)<b class='flag-5'>開發(fā)</b>】

    鴻蒙OS開發(fā)實(shí)例:【ArkTS多線程@Concurrent裝飾器校驗(yàn)并發(fā)函數(shù)】

    在使用TaskPool時(shí),執(zhí)行的并發(fā)函數(shù)需要使用該裝飾器修飾,否則無法通過相關(guān)校驗(yàn)。從API version 9開始,該裝飾器支持在ArkTS卡片中使用。
    的頭像 發(fā)表于 04-02 14:45 ?541次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫</b>多線程@Concurrent裝飾器校驗(yàn)<b class='flag-5'>并發(fā)</b>函數(shù)】

    鴻蒙OS開發(fā)實(shí)例:【ArkTS異步并發(fā)簡述Promise】

    Promise和async/await提供異步并發(fā)能力,是標(biāo)準(zhǔn)的JS異步語法。異步代碼會(huì)被掛起并
    的頭像 發(fā)表于 04-02 18:37 ?870次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)例</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'>并發(fā)</b>簡述Promise】

    鴻蒙OS開發(fā)實(shí)例:【ArkTS單次I/O任務(wù)開發(fā)

    Promise和async/await提供異步并發(fā)能力,適用于單次I/O任務(wù)的場景開發(fā),本文以使用異步
    的頭像 發(fā)表于 04-02 21:03 ?264次閱讀
    <b class='flag-5'>鴻蒙</b>原<b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫</b>單次I/O任務(wù)<b class='flag-5'>開發(fā)</b>】