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

Bloc事件流是一個阻塞隊列結論解析

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

前言

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

新建一個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 {}

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

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

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

現(xiàn)象:

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

結論:

Bloc 的 event 隊列是一個阻塞性隊列,先進先出,只有當上一個事件消費完畢后,才會觸發(fā)響應隊列中的下一個事件。

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

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

Stream隊列是否也是有序的?

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

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

相關文章

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

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

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

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

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

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

    本文主要介紹了Spring Boot 防止接口惡意刷新和暴力請求的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    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中的批量刪除操作。 非常不錯,感興趣的朋友一起看看吧
    2016-09-09
  • jedis的testWhileIdle用法源碼解讀

    jedis的testWhileIdle用法源碼解讀

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

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

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

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

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

    Java反射之深入理解

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

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

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

最新評論