最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android?flutter?Dio鎖的巧妙實現(xiàn)方法示例

 更新時間:2023年01月17日 15:17:02   作者:linversion  
這篇文章主要為大家介紹了Android?flutter?Dio鎖的巧妙實現(xiàn)方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

看Dio庫源碼的時候,發(fā)現(xiàn)其攔截器管理的邏輯處用到了一個Lock,這個Lock巧妙地利用了Completer和Future的機制來實現(xiàn),記錄一下。

/// Add lock/unlock API for interceptors.
class Lock {
  Future? _lock;
  late Completer _completer;
  /// 標識攔截器是否被上鎖
  bool get locked => _lock != null;
  /// Lock the interceptor.
  ///
 ///一旦請求/響應攔截器被鎖,后續(xù)傳入的請求/響應攔截器將被添加到隊列中,它們將不會
///繼續(xù),直到攔截器解鎖
  void lock() {
    if (!locked) {
      _completer = Completer();
      _lock = _completer.future;
    }
  }
  /// Unlock the interceptor. please refer to [lock()]
  void unlock() {
    if (locked) {
    //調用complete()
      _completer.complete();
      _lock = null;
    }
  }
  /// Clean the interceptor queue.
  void clear([String msg = 'cancelled']) {
    if (locked) {
    //complete[future] with an error
      _completer.completeError(msg);
      _lock = null;
    }
  }
  /// If the interceptor is locked, the incoming request/response task
  /// will enter a queue.
  /// 
  /// [callback] the function  will return a `Future`
  /// @nodoc
  Future? enqueue(EnqueueCallback callback) {
    if (locked) {
      // we use a future as a queue
      return _lock!.then((d) => callback());
    }
    return null;
  }
}

以上就是Android flutter Dio鎖的巧妙實現(xiàn)方法示例的詳細內容,更多關于Android flutter Dio鎖的資料請關注腳本之家其它相關文章!

相關文章

最新評論

雷州市| 疏附县| 陵水| 水城县| 应用必备| 连云港市| 平遥县| 宣武区| 毕节市| 独山县| 南投市| 米林县| 体育| 共和县| 台前县| 宁安市| 金华市| 文水县| 汉中市| 利川市| 龙泉市| 金乡县| 宿迁市| 奉节县| 灌云县| 曲靖市| 寿宁县| 乡城县| 新巴尔虎右旗| 泗阳县| 巫溪县| 襄汾县| 桐城市| 清丰县| 紫阳县| 五台县| 江都市| 土默特右旗| 息烽县| 梁河县| 西青区|