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

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

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

正文

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

/// Add lock/unlock API for interceptors.
class Lock {
  Future? _lock;
  late Completer _completer;
  /// 標(biāo)識(shí)攔截器是否被上鎖
  bool get locked => _lock != null;
  /// Lock the interceptor.
  ///
 ///一旦請(qǐng)求/響應(yīng)攔截器被鎖,后續(xù)傳入的請(qǐng)求/響應(yīng)攔截器將被添加到隊(duì)列中,它們將不會(huì)
///繼續(xù),直到攔截器解鎖
  void lock() {
    if (!locked) {
      _completer = Completer();
      _lock = _completer.future;
    }
  }
  /// Unlock the interceptor. please refer to [lock()]
  void unlock() {
    if (locked) {
    //調(diào)用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鎖的巧妙實(shí)現(xiàn)方法示例的詳細(xì)內(nèi)容,更多關(guān)于Android flutter Dio鎖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

信宜市| 屯昌县| 余干县| 营口市| 儋州市| 乌鲁木齐县| 方城县| 荆州市| 遂溪县| 利川市| 金阳县| 洛扎县| 连南| 漳平市| 宣化县| 麦盖提县| 南城县| 大冶市| 全椒县| 兰考县| 京山县| 濉溪县| 科技| 榆中县| 裕民县| 张家川| 南宫市| 西畴县| 汤阴县| 巴林右旗| 边坝县| 城固县| 广水市| 长泰县| 疏勒县| 当阳市| 收藏| 炎陵县| 襄垣县| 祁阳县| 石家庄市|