14.關於Dart中的Future你掌握的夠嗎?

目錄傳送門:《Flutter快速上手指南》先導篇
git

《異步-async和await》 小節中,提到過一個異步函數,會返回一個 Future 對象,它持有了異步函數的返回結果。github

本篇文章,就來認識一下 Future 吧。bash

認識 Future

Future 是在將來某個時間得到想要對象的一種手段。異步

以上是 Future 的定義。async

簡單來講,就是咱們可以經過它在某個時間點得到異步任務中返回的值。函數

實際上,就是給 Future 設置回調函數,當異步任務執行完成後,會調用回調函數。post

Future<T> login = new Future<T>(() {
                      ...
                      return t;
                    });
login.then((t){
    //..
})
複製代碼

當異步的 login 任務執行完成後,回調用 then() 中的回調函數。ui

Future 的經常使用函數

  • Future.then()spa

    任務執行完成會進入這裏,可以得到返回的執行結果。3d

  • Future.catchError()

    有任務執行失敗,能夠在這裏捕獲異常。

  • Future.whenComplete()

    當任務中止時,最後會執行這裏。

  • Future.wait()

    能夠等待多個異步任務執行完成後,再調用 then()

    只有有一個執行失敗,就會進入 catchError()

  • Future.delayed()

    延遲執行一個延時任務。

這是一個例子:

Future.wait([
  // 2秒後返回結果
  Future.delayed(new Duration(seconds: 2), () {
    return "hello";
  }),
  // 4秒後返回結果
  Future.delayed(new Duration(seconds: 4), () {
    return " world";
  })
]).then((results) {
  //執行成功會走到這裏
  print(results[0]+results[1]);
}).catchError((e){
  //執行失敗會走到這裏
  print(e);
}).whenComplete((){
  //不管成功或失敗都會走到這裏
});;複製代碼


目錄傳送門:《Flutter快速上手指南》先導篇

如何找到我?

傳送門:CoorChice 的主頁

傳送門:CoorChice 的 Github

相關文章
相關標籤/搜索