99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

HarmonyOS實(shí)戰(zhàn):一招解決等待多個并發(fā)結(jié)果

尤楓 ? 來源:jf_54996641 ? 作者:jf_54996641 ? 2025-06-09 14:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

年前公司與華為簽訂了合作備忘錄,加入了鴻蒙生態(tài)這個大家庭。。公司想趕著鴻蒙純血系統(tǒng)上市之前,發(fā)布自己的鴻蒙軟件。開發(fā)鴻蒙NEXT版本軟件就變成了今年的一個工作重心。

** 本文主要講解開發(fā)過程中遇到的并發(fā)問題,官方API 11文檔寫的太簡單了,根本沒有解決方案,小編也是苦思冥想,絞盡腦汁才找到解決方案。需要開發(fā)鴻蒙的小伙伴可以仔細(xì)閱讀,避免踩坑。**

問題

在開發(fā)清除緩存的功能時,鴻蒙NEXT提供的文檔中說明,應(yīng)用緩存文件有四個,需要清除指定的四個緩存文件夾。如圖所示:

清除緩存代碼如下:

import fs from '@ohos.file.fs'
          
    fs.access("文件路徑").then((isHas:boolean) = > {
      if(isHas) { //判斷文件是否存在
        fs.rmdirSync("文件路徑")//刪除文件
       
      }
    })

需要同時清除這四個文件夾,然后再計(jì)算這四個文件夾的大小。由于fs.access 方法是耗時操作。所以只能在異步線程中執(zhí)行。

解決方案

一般思路

鴻蒙官方文檔API 11 提供了使用Promise和async/await處理異步并發(fā)問題。

注意是單次I/O任務(wù),可問題是我們需要解決同時并發(fā)問題,一次拿到四次清除緩存結(jié)果再去統(tǒng)計(jì)緩存大小。這個時候可能有的小伙伴就會說,那就先清除第一個,等一個結(jié)果返回再清除第二個,以此類推。也能解決問題。如下圖所示:

fs.access("文件路徑1").then((isHas:boolean) = > {
      if(isHas) { //判斷文件是否存在
        fs.rmdirSync("文件路徑1")//刪除文件
               
       fs.access("文件路徑2").then((isHas:boolean) = > {
         if(isHas) { //判斷文件是否存在
           fs.rmdirSync("文件路徑2")//刪除文件
             .....................
        }
    })
      }
    })

但是這樣就會帶來兩個問題:多層嵌套與代碼混亂。在Flutter中這個問題非常好解決。這里就不詳細(xì)描述了。

優(yōu)雅方案

使用Promise.all 解決。小編在官方文檔中并沒有找到Promise.all 相關(guān)說明,可能是鴻蒙還沒注意到這種需求場景吧。直接上代碼。

  1. 先將文件清除包裝成一個異步任務(wù)。
asyncClear(dir: string): Promise< void > {
    return new Promise((resolve, reject) = > {
      fs.access(dir).then((isHas: boolean) = > {
        if (isHas) {
          fs.rmdir(dir)
        }
        resolve()
      })
    })
  }
  1. 將四個緩存文件夾對應(yīng)的任務(wù)放在一個數(shù)組中。
let promises = [
      this.asyncClear("文件夾1"),
      this.asyncClear("文件夾2"),
      this.asyncClear("文件夾3"),
      this.asyncClear("文件夾4")
    ]
  1. 將任務(wù)數(shù)組放進(jìn)Promis.all中,等待四個任務(wù)執(zhí)行結(jié)束。
Promise.all(promises).then(() = > {
      // 結(jié)束回調(diào)
    })
  1. 在結(jié)束回調(diào)中 再去調(diào)用計(jì)算緩存大小的方法。
storageStatistics.getCurrentBundleStats().then((bundleStats) = > {
        let cacheSizeNum = bundleStats.cacheSize
        let unit = "KB"
        if (cacheSizeNum > 1024) {
          cacheSizeNum = Math.floor(cacheSizeNum) / 1024
          unit = "KB"
        }
        if (cacheSizeNum > 1024) {
          cacheSizeNum = Math.floor(cacheSizeNum) / 1024
          unit = "MB"
        }
        if (cacheSizeNum > 1024) {
          cacheSizeNum = Math.floor(cacheSizeNum) / 1024
          unit = "GB"
        }
        if (cacheSizeNum > 1024) {
          cacheSizeNum = Math.floor(cacheSizeNum) / 1024
          unit = "TB"
        }
        let chacheSizeString = "" + Math.floor(cacheSizeNum) + unit
      });

總結(jié)

鴻蒙NEXT的API還不算完善,需要每個開發(fā)者的參與,發(fā)現(xiàn)問題,提出問題,鴻蒙開發(fā)人員才能更好的解決問題。如果您也是鴻蒙開發(fā)者,有其他更好的解決方案,歡迎評論區(qū)交流 ,互相學(xué)習(xí),互相成長!

審核編輯 黃宇

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

    關(guān)注

    60

    文章

    2618

    瀏覽量

    44038
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

    33019
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    一招解決多地區(qū)無感考勤的問題

    在當(dāng)今集團(tuán)化和連鎖化經(jīng)營日益普及的背景下,企業(yè)通常會遭遇個管理難題:分散于各地的分公司考勤數(shù)據(jù)難以統(tǒng),統(tǒng)計(jì)工作滯后且流程繁瑣。傳統(tǒng)的指紋或刷卡考勤方式需要人工核對,這不僅效率低下,還容易出現(xiàn)作弊
    的頭像 發(fā)表于 07-04 16:46 ?175次閱讀

    HarmonyOS實(shí)戰(zhàn)一招搞定保存圖片到相冊

    保存圖片功能幾乎是每個應(yīng)用程序必備的功能之,當(dāng)用戶遇到喜歡的圖片時可以保存到手機(jī)相冊。那么在鴻蒙中保存圖片是否也需要申請用戶存儲權(quán)限以及如何將圖片保存到相冊,本文將詳細(xì)講述怎么保存網(wǎng)絡(luò)圖片,指定布局生成圖片保存至相冊的功能實(shí)現(xiàn)。
    的頭像 發(fā)表于 06-24 17:04 ?167次閱讀

    鴻蒙5開發(fā)寶藏案例分享---應(yīng)用并發(fā)設(shè)計(jì)

    ?** 鴻蒙并發(fā)編程實(shí)戰(zhàn)指南:解鎖ArkTS多線程黑科技** 嘿,開發(fā)者朋友們! 今天給大家扒扒鴻蒙官方文檔里藏著的并發(fā)編程寶藏—— 100+實(shí)戰(zhàn)
    發(fā)表于 06-12 16:19

    HarmonyOS實(shí)戰(zhàn):組件化項(xiàng)目搭建

    ?本文將詳細(xì)講解HarmonyOs組件化項(xiàng)目搭建的全過程,帶領(lǐng)大家實(shí)現(xiàn)個組件化項(xiàng)目。 項(xiàng)目創(chuàng)建 首先創(chuàng)建個項(xiàng)目工程,點(diǎn)擊開發(fā)工具DevEco-Stdio的****File 選項(xiàng),選擇 New 然后點(diǎn)擊 Create Proj
    的頭像 發(fā)表于 06-09 14:58 ?208次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實(shí)戰(zhàn)</b>:組件化項(xiàng)目搭建

    HarmonyOS5云服務(wù)技術(shù)分享--ArkTS開發(fā)Node環(huán)境

    氣的方式探索這個功能,結(jié)尾還有實(shí)用總結(jié)和鼓勵彩蛋哦~? ? 、HarmonyOS云函數(shù)開發(fā):核心能力與價值 HarmonyOS的云函數(shù)(Serverless)為開發(fā)者提供了??無服務(wù)器架構(gòu)??的便捷
    發(fā)表于 05-22 17:21

    一招鮮,吃遍天的EMC三要素

    系統(tǒng)的電磁兼容性問題,更是多個系統(tǒng)之間相互作用所帶來的系列復(fù)雜情況。系統(tǒng)與系統(tǒng)之間的相互影響并非簡單的線性關(guān)系。它們之間的交互作用可能涉及多種因素,如空間輻射、信
    的頭像 發(fā)表于 03-06 10:41 ?1214次閱讀
    <b class='flag-5'>一招</b>鮮,吃遍天的EMC三要素

    HarmonyOS NEXT 原生應(yīng)用/元服務(wù)-ArkTS代碼調(diào)試等待調(diào)試

    之前,將直處于等待狀態(tài)。可通過進(jìn)度條右側(cè)的取消按鈕進(jìn)行取消。 拉起設(shè)備端應(yīng)用,此時將會進(jìn)入調(diào)試。 本文主要參考與引用自HarmonyOS官方文檔。
    發(fā)表于 03-03 16:01

    一招治“浮”! 高精度3D線激光輪廓測量儀保障螺絲裝配

    浮高產(chǎn)生的系列問題,都將對機(jī)器的安全運(yùn)行埋下隱患。 各類因素產(chǎn)生的螺絲浮高 GL-8000系列 為您一招治“浮” 螺絲浮高檢測案例 01 檢測需求 1.次性掃描檢測4個螺絲的高度差 2.精度要求0.03-0.05mm 3.速
    的頭像 發(fā)表于 02-06 18:15 ?574次閱讀
    <b class='flag-5'>一招</b>治“浮”! 高精度3D線激光輪廓測量儀保障螺絲裝配

    名單公布!【書籍評測活動NO.56】極速探索HarmonyOS NEXT:純血鴻蒙應(yīng)用開發(fā)實(shí)踐

    HarmonyOS NEXT的開發(fā)框架體系,幫助讀者快速建立起整體認(rèn)知。書中包含了大量實(shí)戰(zhàn)案例,涵蓋界面構(gòu)建、網(wǎng)絡(luò)交互、多設(shè)備適配和協(xié)同開發(fā)等多個場景。另外,書中還詳細(xì)講解了HarmonyOS
    發(fā)表于 01-20 16:53

    文詳解CMP并發(fā)多協(xié)議

    隨著無線通信的不斷發(fā)展,對可同時支持多個協(xié)議的設(shè)備的需求顯著增加。此功能稱為并發(fā)多協(xié)議(Concurrent Multiprotocol, CMP),允許設(shè)備同時在不同無線標(biāo)準(zhǔn)下運(yùn)行,從而提高設(shè)備的多功能性和適應(yīng)性。
    的頭像 發(fā)表于 01-03 10:12 ?892次閱讀
    <b class='flag-5'>一</b>文詳解CMP<b class='flag-5'>并發(fā)</b>多協(xié)議

    HarmonyOS課》煥新升級,賦能開發(fā)者快速掌握鴻蒙應(yīng)用開發(fā)

    HarmonyOS課》煥新升級,賦能開發(fā)者快速掌握鴻蒙應(yīng)用開發(fā) 隨著HarmonyOS NEXT發(fā)布,鴻蒙生態(tài)日益壯大,廣大開發(fā)者對于系統(tǒng)化學(xué)習(xí)平臺和課程的需求愈發(fā)強(qiáng)烈。近日,華為精心打造
    發(fā)表于 01-02 14:24

    教你三異地訪問NAS

    NAS作為家庭或企業(yè)存儲數(shù)據(jù)的神器,能夠讓我們隨時隨地訪問存儲在其中的文件。但當(dāng)我們身處異地時,如何高效、安全地訪問NAS卻成了個難題。別擔(dān)心,節(jié)點(diǎn)小寶來幫你! 第一招:利用內(nèi)網(wǎng)穿透功能 首先,在
    的頭像 發(fā)表于 01-02 11:26 ?1025次閱讀
    教你三<b class='flag-5'>招</b>異地訪問NAS

    存儲空間告急?NAS擴(kuò)容一招搞定,輕松無憂!

    和vlog …… 這些點(diǎn)點(diǎn)滴滴 都是我們共同走過2024年的珍貴憑證 當(dāng)硬盤的進(jìn)度條漸漸變紅 仿佛在向我們展示這年來滿滿的收獲 但存儲空間緊急告急怎么辦? NAS擴(kuò)容一招搞定 、陣列擴(kuò)容 在不改變陣列模式,保證數(shù)據(jù)不被刪除的
    的頭像 發(fā)表于 12-24 16:35 ?651次閱讀
    存儲空間告急?NAS擴(kuò)容<b class='flag-5'>一招</b>搞定,輕松無憂!

    HarmonyOS開發(fā)寶典震撼來襲,卓越應(yīng)用開發(fā)之旅觸即發(fā),輕松啟程!

    HarmonyOS賦能產(chǎn)品,全面護(hù)航開發(fā)者從HarmonyOS感知、學(xué)習(xí)進(jìn)階、開發(fā)實(shí)踐至技術(shù)支持的全旅程,助力開發(fā)者高效開發(fā)! 我們傾心打造了個涵蓋高頻場景的最佳實(shí)踐案例庫,匯聚豐富實(shí)戰(zhàn)
    發(fā)表于 12-05 08:57

    請問多個ADS1220如何能同步得到采樣結(jié)果?

    請問多個ADS1220如何能同步得到采樣結(jié)果,或者有沒有與ADS1220功能,性能類似,但是帶有同步控制的ADC?
    發(fā)表于 11-29 08:30