cat

dabaicai has a cat

0%

dart

  • Future

    • 通过 dart 的 event loop 实现
    • 延时任务,通过 Timer 来实现
      • Future.delayed(Duration(second:3),()=>print(“delayed task”));
    • 创建一个返回指定 value 的 Future
      • Future.value(“abc”).then((res)=>print(res));
    • 执行顺序
- Future()	-	默认 Timer		
- Future.sync() - 同步早主线执行
- Future.microtask() - 转换为微任务
- Future.value(val) - 根据值选择,同时可以控制顺序
  • Future.wait 执行多个,都完成才返回

    • Future.wait([FutureA(),FutureB()]).then((res){ print(res);})
  • Future.any 执行多个,返回一个最快的

  • timeout

    • Future(xxx).timeout(Duration(seconds:3)).then((res){ print(“超时的then”)})
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Future getXXX(){
    return Future("xxx");
    }

    main(){
    // then 获取结果
    getXXX().then((res){
    print(res);
    }).catchError((e){ // 捕获异常
    print(e);
    }).whenComplete({ // Future 完成回调
    print("complete");
    })
    }
  • stream