欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Bloc事件流是一個(gè)阻塞隊(duì)列結(jié)論解析

 更新時(shí)間:2022年11月14日 15:24:05   作者:李小轟_Rex  
這篇文章主要為大家介紹了Bloc事件流是一個(gè)阻塞隊(duì)列結(jié)論解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

在Flutter中有state的概念,我們使用Bloc進(jìn)行狀態(tài)管理,通過Bloc.addEvent的方式進(jìn)行事件傳遞,狀態(tài)變更。關(guān)于Bloc的基礎(chǔ)用法,可以查閱Bloc官網(wǎng)相關(guān)資料,這里我們僅記錄一下Bloc的隊(duì)列等待。

新建一個(gè)Bloc類

class TestBloc extends Bloc<TestEvent, TestState> {
  TestBloc() : super(new TestState());
  @override
  Stream<TestState> mapEventToState(TestEvent event) async* {
    if (event is TestEventA) {
      print("A");
      await Future.delayed(Duration(seconds: 2));
      print("finish A await");
    } else if (event is TestEventB) {
      print("B");
    }
  }
}
abstract class TestEvent {}
class TestEventA extends TestEvent {}
class TestEventB extends TestEvent {}
class TestState {}

如上,定義了一個(gè)最基礎(chǔ)的Bloc,事件A,事件B。我們接收到事件A后延時(shí)等待了2秒鐘,用于驗(yàn)證Bloc的Event Loop是否具有阻塞性。

新建一個(gè)頁面main.dart, 添加按鈕事件,同時(shí)給bloc發(fā)送事件A和事件B:

//...省略非關(guān)鍵代碼
onPressed: (){
          _bloc.add(TestEventA());
          _bloc.add(TestEventB());
    }

現(xiàn)象:

print("A") 打印后,等待了2秒,打印 "finish A await", 然后才響應(yīng)到事件B的觸發(fā)。

結(jié)論:

Bloc 的 event 隊(duì)列是一個(gè)阻塞性隊(duì)列,先進(jìn)先出,只有當(dāng)上一個(gè)事件消費(fèi)完畢后,才會(huì)觸發(fā)響應(yīng)隊(duì)列中的下一個(gè)事件。

解釋開發(fā)中所遇到的問題現(xiàn)象

在 await 前面 addEvent,會(huì)阻塞線程,造成事件的接收延時(shí),但在await前面 yeild 不受影響,可以在延時(shí)前收到狀態(tài)變更

Stream隊(duì)列是否也是有序的?

通過代碼測試,流內(nèi)消息體的順序與加入的順序無關(guān),與消息體本身的耗時(shí)正相關(guān)。

以上就是Bloc事件流是一個(gè)阻塞隊(duì)列結(jié)論解析的詳細(xì)內(nèi)容,更多關(guān)于Bloc 事件流阻塞隊(duì)列的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 教新手使用java如何對一個(gè)大的文本文件內(nèi)容進(jìn)行去重

    教新手使用java如何對一個(gè)大的文本文件內(nèi)容進(jìn)行去重

    用HashSet對內(nèi)容去重這個(gè)過程jvm會(huì)內(nèi)存溢出,只能首先將這個(gè)大文件中的內(nèi)容讀取出來,對每行String的hashCode取模取正整數(shù),可用取模結(jié)果作為文件名,將相同模數(shù)的行寫入同一個(gè)文件,再單獨(dú)對每個(gè)小文件進(jìn)行去重,最后再合并
    2021-06-06
  • springcloud配置ssh的問題及解決方法

    springcloud配置ssh的問題及解決方法

    這篇文章主要介紹了springcloud配置ssh,本文給大家介紹在配置過程中遇到的問題及解決方法,通過結(jié)合實(shí)例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Spring Boot 防止接口惡意刷新和暴力請求的實(shí)現(xiàn)

    Spring Boot 防止接口惡意刷新和暴力請求的實(shí)現(xiàn)

    本文主要介紹了Spring Boot 防止接口惡意刷新和暴力請求的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 解決Spring Boot 在localhost域奇怪的404問題(Mac book pro)

    解決Spring Boot 在localhost域奇怪的404問題(Mac book pro)

    這篇文章主要介紹了解決Spring Boot 在localhost域奇怪的404問題(Mac book pro),需要的朋友可以參考下
    2017-09-09
  • Mybatis批量刪除數(shù)據(jù)操作方法

    Mybatis批量刪除數(shù)據(jù)操作方法

    MyBatis的作用我想不用多說,今天說說MyBatis中的批量刪除操作。 非常不錯(cuò),感興趣的朋友一起看看吧
    2016-09-09
  • jedis的testWhileIdle用法源碼解讀

    jedis的testWhileIdle用法源碼解讀

    這篇文章主要為大家介紹了jedis的testWhileIdle用法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 使用@PathVariable時(shí)候無法將參數(shù)映射到變量中的解決

    使用@PathVariable時(shí)候無法將參數(shù)映射到變量中的解決

    這篇文章主要介紹了使用@PathVariable時(shí)候無法將參數(shù)映射到變量中的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解rabbitmq使用springboot實(shí)現(xiàn)fanout模式

    詳解rabbitmq使用springboot實(shí)現(xiàn)fanout模式

    這篇文章主要介紹了rabbitmq使用springboot實(shí)現(xiàn)fanout模式,Fanout特點(diǎn)是發(fā)布與訂閱模式,是一種廣播機(jī)制,它是沒有路由key的模式,需要的朋友可以參考下
    2023-07-07
  • Java反射之深入理解

    Java反射之深入理解

    這篇文章主要介紹了Java反射機(jī)制的深入理解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 5分鐘讓你快速掌握java8 stream常用開發(fā)技巧

    5分鐘讓你快速掌握java8 stream常用開發(fā)技巧

    這篇文章主要給大家介紹了關(guān)于java8 stream常用開發(fā)技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論