美文网首页
Dart语言

Dart语言

作者: 9f454a558315 | 来源:发表于2024-01-07 23:29 被阅读0次

1. dynamic与Object

Object 是所有Dart所有对象的根基类,Dart中所有类型都是Object的子类(包括Function和NULL),所以任何数据都可以赋值给Object声明的对象。dynamic和Object声明的变量都可以赋值任何对象,且以后可以改变赋值的类型。

dynamic与Object不同的是dynamic声明的对象编译器会提供所有可能的组合,而Object声明的对象只能使用 Object 的属性与方法, 否则编译器会报错。

2. final和const

const是编译时常量(编译时直接替换为常量值),而final是第一次使用时被初始化。

3. 异步支持

Dart中有很多返回Future或者Stream对象的函数,这些函数被称为异步函数。它们只会在设定完成一些耗时操作后返回,如IO操作,而不是等到这个操作完成。

async和await关键词支持异步编程,可以写出和同步代码很像的异步代码。

3.1 Future对象

Future和JavaScript中Promise很像,表示一个异步操作的最终完成(或者失败)及其结果值的表示。它用来处理异步操作,异步处理成功就执行成功的操作,异步执行失败就执行失败的操作。一个Future只对应一个结果,那么成功,要么失败。

Future的所有API的返回值都是一个Future对象,所以可以进行链式调用。

在两组耗时操作完成之后做一些处理,使用wait

3.2 async和await

Dart中async和await和JavaScript中async和await功能一样:异步任务串行化。

回调地狱(Callback Hell)

消除回调地狱

方式一:使用Future链式调用

方式二:使用async和await

3.3 Stream对象

Stream也可以接受异步事件数据,和Future不同的是,它可以接受多个异步操作的结果。在执行异步任务时,可以通过多次触发成功或失败事件来传递数据或错误异常。

相关文章

网友评论

      本文标题:Dart语言

      本文链接:https://www.haomeiwen.com/subject/ffrnndtx.html