Dart异步编程(Future、async和await)

Dart其实是单线程的语言。

异步不等于多线程,说白了是把一个任务扔到另一个地方去,不要阻碍我当前代码的执行,等闲下来时再去执行。(多个任务来回调度,互不干涉的)

常见的异步操作:1、通过网络获取数据;2、写入数据库;3、从文件读取数据。

要在Dart中执行异步操作,我们可以使用Future类以及async和await关键字

//timeout 超时操作  catchError 处理异常  whenComplete完成

Future((){}).timeout((){}).then((){}).catchError((){}).whenComplete((){});

void test() async { await Future((){}); } //函数里,必须后面的操作是异步的,才能使用await

Future任务按顺序添加进队列,同时,Future后面跟着的then()是在Future任务执行后就紧跟着立马执行的,也就是说then 会比Future的优先级高。

如果有多个Future任务执行,但是我们想要在多个任务执行完成后再做其他的事情,我们可以用Future.wait讲多个Future任务用数组包起来,如下:

Future.wait([Future((){}),Future((){})]).then((){});  //then里面拿到的是对应的数组值

对于异步编程,我们也可以用Timer.run()来操作完成,其实不难发现 Future内部也是用的Timer.run()来实现了异步编程。

你可能感兴趣的:(Dart异步编程(Future、async和await))