【dart線程之怎么處理異步和順序異步任務隊列】

dart線程之怎么處理異步和順序異步任務隊列

單線程的dart怎么處理異步任務的?

  • 事件循環模型就是實現異步處理任務的核心。

關于阻塞式調用和非阻塞式調用的概念

  • 阻塞和非阻塞關注的是程序在等待調用結果(消息、返回值)時的狀態
  • 阻塞式調用: 調用結果返回之前,當前線程會被掛起,調用線程只有在得到調用結果之后才會繼續執行
  • 非阻塞式調用: 調用執行后,當前線程不會停止執行,只需要過一段時間來檢查一下有沒有結果返回即可

對于順序異步怎么實現

通過Future的then鏈式調用

示例:

import 'dart:io';main(List<String> args) {print("main start");Future((){//1.發送第一次請求sleep(Duration(seconds:8));return "第一次的結果";}).then((value){print(value);//2.發送的第二次請求sleep(Duration(seconds:3));//return "第二次的結果";throw Exception("第二次請求異常");}).then((value){print(value);}).catchError((err){print(err);}).whenComplete(() => {print("代碼完成")});print("main end");
}

通過連續的await

  • await等待該操作結果,所以等待完繼續下一個也能實現順序異步
    示例:
Future getData() async{//1.調用第一次網絡請求var res1 = await getNetworkData("argument1");print(res1);var res2 = await getNetworkData(res1);print(res2);var res3 = await getNetworkData(res2);print(res3);return res3;
}

await、async的意義

  • 用同步的代碼格式,去實現異步的調用過程
  • await需要寫在耗時操作之前,表示等待該操作結果

備注:通過查閱一些資料整理所得,如有錯誤,煩請指正。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JS中的OOP

JS中的OOP OOP 為我們解決了什么問題&#xff1f;想象一下&#xff0c;我們希望為教師提供一個平臺&#xff0c;每位注冊的教師都可以提交分數&#xff0c;并為課程分配作業和其他內容。 如果有一個地方&#xff08;在本例中是一個對象&#xff09;&#xff0c;可以訪問所有教…

Python編寫的爬蟲為什么受歡迎?

每每回想起我當初學習python爬蟲的經歷&#xff0c;當初遇到的各種困難險阻至今都歷歷在目。即便當初道阻且長&#xff0c;窮且益堅&#xff0c;我也從來沒有想過要放棄。今天我將以我個人經歷&#xff0c;和大家聊一聊有關Python語音編寫的爬蟲的事情。談一談為什么最近幾年py…

C#中的事件(委托的發布和訂閱、事件的發布和訂閱、EventHandler類、Windows事件)

目錄 一、委托的發布和訂閱 1.訂閱操作符號“"和取消訂閱操作符號“-” 2.示例源碼 二、事件的發布和訂閱 三、EventHandler類 四、Windows事件 C#中的事件是指某個類的對象在運行過程中遇到的一些特定事情&#xff0c;而這些特定的事情有必要通知給這個對象的使用者…

【海德教育】河北初級職稱報名條件:

河北助理工程師 學歷要求 大專畢業后滿3年&#xff0c;工程類專業 本科畢業后滿1年 &#xff0c;工程類專業 非工程類專業&#xff0c;年限增加2年即可。

多線程,線程池,線程的創建,線程池的參數

文章目錄 多線程-1 高并發〇、使用多線程的場景1. 為什么使用多線程 1. 線程概述1.1 線程和進程1.2 并發和并行1.3 多線程的優勢1.4 程序運行原理1.5 主線程 1.6 線程的 6 種狀態2. 線程的創建和啟動2.1 Thread類2.2創建線程有哪幾種方法2.2.1 繼承**Thread**類&#xff0c;重寫…

centos7 安裝docker

1.卸載舊版本&#xff0c;不管裝沒裝過&#xff0c;執行一下&#xff0c;防止版本沖突 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 2. yum安裝gcc相關 以及 安…

electron27-react-mateos:基于electron+react18仿matePad桌面系統

基于Electron27React18ArcoDesign搭建桌面版OS管理系統。 electron-react-mateos 基于最新前端跨端技術棧electron27.xreact18arco-designzustand4sortablejs構建的一款仿制matePad界面多層級路由管理OS系統。 ElectronReactOS支持桌面多路由配置&#xff0c;新開窗口彈窗開啟路…

YB4051系列設備是高度集成的 Li-lon 和 Li-Pol 線性充電器,針對便攜式應用的小容量電池。

YB4051H 300mA 單電池鋰離子電池充電器0.1 mA 終端&#xff0c;45nA 電池漏電流 概述&#xff1a; YB4051系列設備是高度集成的 Li-lon 和 Li-Pol 線性充電器&#xff0c;針對便攜式應用的小容量電池。它是一個完整的恒流/恒壓線性充電器。不需要外部感應電阻&#xff0c;由于…

51單片機利用I/O口高阻狀態實現觸摸控制LED燈

51單片機利用I/O口高阻狀態實現觸摸控制LED燈 1.概述 這篇文章介紹使用I/O口的高阻狀態實現一個觸摸控制LED燈亮滅的實驗。該實驗通過手觸摸P3.7引腳&#xff0c;改變電平信號控制燈的亮滅。 2.實驗過程 2.1.實驗材料 名稱型號數量單片機STC12C20521LED彩燈無1晶振12MHZ1電…

Elasticsearch:ES|QL 函數及操作符

如果你對 ES|QL 還不是很熟悉的話&#xff0c;請閱讀之前的文章 “Elasticsearch&#xff1a;ES|QL 查詢語言簡介???????”。ES|QL 提供了一整套用于處理數據的函數和運算符。 功能分為以下幾類&#xff1a; 目錄 ES|QL 聚合函數 AVG COUNT COUNT_DISTINCT 計數為近…

geemap學習筆記013:為遙感動態GIF圖添加圖名

前言 遙感動態GIF圖可以展示地理區域隨時間的變化&#xff0c;這對于監測自然災害、濕地變化、城市擴展、農田變化等方面非常有用&#xff0c;并且可以反復觀察圖像&#xff0c;以更深入地了解地表的動態變化。本節主要是對遙感動態GIF圖添加圖名&#xff0c;以便于更好地理解…

聚觀早報 |一加12正式開啟預訂;OPPO Reno11系列賣點

【聚觀365】11月24日消息 一加12正式開啟預訂 OPPO Reno11系列賣點 小鵬第三季度營收財報 Claude 2.1 聊天機器人公布 現代汽車將與倫敦大學學院合作 一加12正式開啟預訂 全新的一加12系列公開亮相已有一段時間&#xff0c;不久前一加官方宣布&#xff0c;該機將于12月4日…

android:The application could not be installed: INSTALL_FAILED_TEST_ONLY

1、問題描述 在android12 &#xff08;OPPO PEEM00&#xff09;上安裝APP時&#xff0c;提示上述異常 原因分析&#xff1a; android:testOnly&#xff1a;應用是否是為了測試&#xff0c;它可能向外暴露數據&#xff0c;引發安全漏洞。因此國內廠商的手機檢測到這個屬性為t…

ebpf實戰(一)-------監控udp延遲

問題背景: 為了分析udp數據通信中端到端的延遲,我們需要對整個通信鏈路的每個階段進行監控,找出延遲最長的階段. udp接收端有2個主要路徑 1.數據包到達本機后&#xff0c;由軟中斷處理程序將數據包接收并放入udp socket的接收緩沖區 數據接收流程 2. 應用程序調用recvmsg等a…

<JavaEE> 什么是進程控制塊(PCB Process Control Block)?

目錄 一、進程控制塊的概念 二、進程控制塊的重要屬性 2.1 唯一身份標識&#xff08;PID&#xff09; 2.2 內存指針 2.3 文件描述符表 2.4 狀態 2.5 優先級 2.6 記賬信息 2.7 上下文 一、進程控制塊的概念 進程控制塊&#xff08;Process Control Block, PCB&#xff…

Springboot引入分布式搜索引擎Es RestAPI

文章目錄 RestAPI初始化RestClient創建索引庫刪除索引庫判斷索引庫是否存在總結 RestClient操作文檔增加文檔數據查詢文檔刪除文檔修改文檔批量導入文檔小結 RestAPI ES官方提供了各種不同語言的客戶端&#xff0c;用來操作ES。這些客戶端的本質就是組裝DSL語句&#xff0c;通…

IOS Frida 常用腳本

調用堆棧 console.log("bt:" + Thread.backtrace(this.context,Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join(\n\t)); Hook 調用,修改返回值 // Get a reference to the openURL selectorvar openURL = ObjC.classes.UIApplication["- openURL:&qu…

uni-app 跨端開發注意事項

文章目錄 前言H5正常但App異常的可能性標題二H5正常但小程序異常的可能性小程序正常但App異常的可能性小程序或App正常&#xff0c;但H5異常的可能性App正常&#xff0c;小程序、H5異常的可能性使用 Vue.js 的注意區別于傳統 web 開發的注意H5 開發注意微信小程序開發注意支付寶…

Docker實用篇

Docker實用篇 0.學習目標 1.初識Docker 1.1.什么是Docker 微服務雖然具備各種各樣的優勢&#xff0c;但服務的拆分通用給部署帶來了很大的麻煩。 分布式系統中&#xff0c;依賴的組件非常多&#xff0c;不同組件之間部署時往往會產生一些沖突。在數百上千臺服務中重復部署…

STM32入門筆記15_PWR電源管理模塊

PWR和低功耗模式 PWR簡介 PWR(Power Control) 電源控制PWR負責管理STM32內部的電源供電部分&#xff0c;可以實現可編程電壓檢測器和低功耗模式的功能可編程電壓檢測器(PVD) 可以監控VDD電源電壓&#xff0c;當VDD下降到PVD閾值以下或上升到PVD閾值之上時&#xff0c;PVD會觸…