Flutter小知识-事件队列

603 阅读1分钟

Flutter是单线程的,如何处理耗时操作呢?

事件队列和微任务队列

Flutter在main函数中运行一个循环消息循环机制,当有事件时(如用户操作)按顺序放入事件队列event queue,有微任务事件时放入微任务队列microtask queue.

这两个队列都是异步队列,Flutter是优先执行微任务队列中的事件.

1616294280(1).png

Future

Flutter提供了Future类来执行自己的耗时任务,如果要将事件立即放入事件队列中


Future(() {
    //async event 异步代码
}).then(_) {
    // 返回值
}

then()接受一个回调函数,在异步任务完成后立即执行.

async/await

await只能用在异步函数中,当函数使用async时,dart就认为这个函数是异步函数,它的返回值就必须为一个Future对象.


Future<String> test1() async {
    await test2();
    return "123";
}