Flutter是单线程的,如何处理耗时操作呢?
事件队列和微任务队列
Flutter在main函数中运行一个循环消息循环机制,当有事件时(如用户操作)按顺序放入事件队列event queue,有微任务事件时放入微任务队列microtask queue.
这两个队列都是异步队列,Flutter是优先执行微任务队列中的事件.
Future
Flutter提供了Future类来执行自己的耗时任务,如果要将事件立即放入事件队列中
Future(() {
//async event 异步代码
}).then(_) {
// 返回值
}
then()接受一个回调函数,在异步任务完成后立即执行.
async/await
await只能用在异步函数中,当函数使用async时,dart就认为这个函数是异步函数,它的返回值就必须为一个Future对象.
Future<String> test1() async {
await test2();
return "123";
}