其他分享
首页 > 其他分享> > Dart开发之——异步处理

Dart开发之——异步处理

作者:互联网

一 概述

开发中需要执行耗时操作,比如:文件下载、网络访问、复杂计算等,这些操作需要进行异步处理,这样不会造成界面的阻塞(卡顿),本文介绍Dart中的异步处理,涉及一下内容:

二 async和await

2.1 说明

2.2 示例

Future<void> main() async {
  var res = await getData();
  print(res);
}
/**获取数据 */
Future<String> getData() async {
  return await requestNet();
}
/**请求网络 */
Future<String> requestNet() {
  return Future.delayed(Duration(seconds: 2), () => "result");
}

打印结果:

result

三 Future

3.1 说明

3.2 Future工厂模式调用的方法

包含以下方法:

示例

Future<String> timeOut() async {
  print("超时了");
  return await "超时了。。。";
}

String speak() {
  return "Hello";
}

Error one rror() {
  throw "出错了";
}
Future<void> main() async {
Future.delayed(Duration(seconds: 4), () => print("延时了"))
      .timeout(Duration(seconds: 1), onTimeout: timeOut);

  var resSync = Future.sync(() => "sync");
  print(await resSync);
  
  var resValue = Future.value(speak());
  print(await resValue);

  var resError = Future.error("出错了", StackTrace.current);
  print(await resError);

  var resMicro = Future.microtask(() => print("microtask"));
  await resMicro;
}

3.3 Future静态方法

包含以下方法

示例

Future<String> timeOut() async {
  print("超时了");
  return await "超时了。。。";
}

Future<void> main() async {
 var map = {"1": timeOut()};
 var futureAny= Future.any(map.values);
 print(await futureAny);
}

3.4 Future构造时示例

Future<String> timeOut() async {
  print("超时了");
  return await "超时了。。。";
}
String speak() {
  return "Hello";
}
Error one rror() {
  throw "出错了";
}

Future<void> main() async {
  var future = Future(onError);
  future.then((value) {
    print("获取值为:${value}");
  }, one rror: (onError) {
    print("错误结果为11:$onError");
  }).whenComplete(() => print("执行完成了!!!"));

  var futureError = Future(onError);
  futureError.catchError((onError) {
    print("错误结果为:$onError");
  });
  }

标签:异步,onError,await,Dart,var,开发,print,async,Future
来源: https://blog.csdn.net/Calvin_zhou/article/details/113767408