精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙OS開發實例:【ArkTS類庫異步并發簡述Promise】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-02 18:37 ? 次閱讀

Promise和async/await提供異步并發能力,是標準的JS異步語法。異步代碼會被掛起并在之后繼續執行,同一時間只有一段代碼執行,適用于單次I/O任務的場景開發,例如一次網絡請求、一次文件讀寫等操作。異步語法是一種編程語言的特性,允許程序在執行某些操作時不必等待其完成,而是可以繼續執行其他操作。

Promise是一種用于處理異步操作的對象,可以將異步操作轉換為類似于同步操作的風格,以方便代碼編寫和維護。Promise提供了一個狀態機制來管理異步操作的不同階段,并提供了一些方法來注冊回調函數以處理異步操作的成功或失敗的結果。

Promise有三種狀態:pending(進行中)、fulfilled(已完成)和rejected(已拒絕)。Promise對象創建后處于pending狀態,并在異步操作完成后轉換為fulfilled或rejected狀態。

最基本的用法是通過構造函數實例化一個Promise對象,同時傳入一個帶有兩個參數的函數,通常稱為executor函數。executor函數接收兩個參數:resolve和reject,分別表示異步操作成功和失敗時的回調函數。例如,以下代碼創建了一個Promise對象并模擬了一個異步操作

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

setTimeout(() = > {
    const randomNumber = 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狀態或操作失敗拋出的異常。例如:

promise.then(result = > {
  console.info(`Random number is ${result}`);
}).catch(error = > {
  console.error(error.message);
});

上述代碼中,then方法的回調函數接收Promise對象的成功結果作為參數,并將其輸出到控制臺上。如果Promise對象進入rejected狀態,則catch方法的回調函數接收錯誤對象作為參數,并將其輸出到控制臺上。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2313

    瀏覽量

    42747
  • 鴻蒙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關鍵字聲明一個函數為異步函數,并使用await關鍵字等待
    發表于 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語言基礎多線程并發概述

    并發模型是用來實現不同應用場景中并發任務的編程模型,常見的并發模型分為基于內存共享的并發模型和基于消息通信的并發模型。 Actor
    發表于 03-22 15:40

    鴻蒙原生應用開發-ArkTS語言基礎多線程并發概述

    并發模型是用來實現不同應用場景中并發任務的編程模型,常見的并發模型分為基于內存共享的并發模型和基于消息通信的并發模型。 Actor
    發表于 03-28 14:35

    HarmonyOS如何使用異步并發能力進行開發

    策略進行優化和開發。 ArkTS支持異步并發和多線程并發。 ● Promise和async/aw
    發表于 09-22 17:35

    HarmonyOS語言基礎開發指南上線啦!

    基礎開發指南為HarmonyOS應用開發者提供了常用的基礎能力: ○ 提供異步并發和多線程
    發表于 10-18 16:36

    鴻蒙 OS 應用開發初體驗

    的 IDE、鴻蒙生態的開發語言 ArkTS,通過模擬器運行起來了鴻蒙 OS 版 HelloWorld。對于已經有移動
    發表于 11-02 19:38

    鴻蒙OS開發實例:【ArkTS多線程I/O密集型任務開發

    使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型任務,同樣會阻塞線程中其它任務的執行,這時需要使用多線程并發能力來進行解決。 I/O密集型任務的性能重點通常不在于CPU
    的頭像 發表于 04-01 16:32 ?459次閱讀
    <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 ?595次閱讀
    <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異步并發async/await】

    async/await是一種用于處理異步操作的Promise語法糖,使得編寫異步代碼變得更加簡單和易讀。通過使用async關鍵字聲明一個函數為異步函數,并使用await關鍵字等待
    的頭像 發表于 04-02 20:57 ?961次閱讀
    <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>async/await】

    鴻蒙OS開發實例:【ArkTS單次I/O任務開發

    Promise和async/await提供異步并發能力,適用于單次I/O任務的場景開發,本文以使用異步進行單次文件寫入為例來提供指導。
    的頭像 發表于 04-02 21:03 ?300次閱讀
    <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>】