Flutter学习(2)Dart语言浅学
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的14套腾讯、字节跳动、阿里、百度等2021最新面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。《Android学习笔记
Future.delayed(new Duration(seconds: 2), () {
return “Rikka The World”;
}).then((data) {
print(data);
});
Future.then是在delayed方法执行完后再执行的
Future.catchError
如果异步任务发生错误,我们可以在catchError中捕获错误
Future.delayed(new Duration(seconds: 2), () {
throw AssertionError(“Error!”);
}).then((data) {
print(“Success”);
}).catchError((e) {
print(e);
});
如果捕获到异常,then的代码就不会走了。
上述代码中,我们使用 catchError来捕获错误,但是不仅仅catchError可以捕获,我们也可以使用then里面的参数来捕获:
Future.delayed(new Duration(seconds: 2), () {
throw AssertionError(“Error!”);
}).then((data) {
print(“Success”);
}, onError: (e) {
print(e);
});
Future.whenComplete
我们会遇到无论异步执行成功或失败都要做的一些事的场景,比如在网络请求前加载对话框,或者在请求结束后关闭对话框,这种场景,有两种方法。第一种是分别在 then或者 catch中关闭一下对话框,第二种就是使用 Future 的 whenComplete回调。
Future.delayed(new Duration(seconds: 2), () {
throw AssertionError(“Error!”);
}).then((data) {
print(“Success”);
}, onError: (e) {
print(e);
}).whenComplete((){
//无论成功还是失败都会走到这里
});
就有点像Java中的 try-catch-finally 中的finally
Future.wait
有些时候,我们需要等待多个异步任务都执行结束后才进行一些操作。那这些操作我们应该在代码的哪个地方使用呢?答案就是使用Future.wait,它接收一个Future数组参数,等待数组中所有的 Future都执行成功后,才会触发 then 的成功回调,只要有一个Future执行失败,就会触发错误回调。示例如下:
Future.wait([
//第一个耗时操作
Future.delayed(new Duration(seconds: 3), () {
return “Rikka”;
}),
//第二个耗时操作
Future.delayed(new Duration(seconds: 5), () {
return “The World”;
}),
]).then((results) {
print(results[0] + results[1]);
}, onError: (e) {
print(e);
}).whenComplete(() {
//无论成功还是失败都会走到这里
});
5s后的输出结果为: Rikka The World
2. Async/await
Dart中的 async/await
回调地狱(Callback Hell)
如果代码中有大量异步逻辑,并且出现大量异步任务依赖其它异步任务的结果时,必然会出现Future.then回调中套回调情况。
JS中就是有这样的诟病,但是随着 Promise、async、await的出现,这样的嵌套回调问题被解决。
学习文档中有个例子,有种登录情况,登录成功会获得用户ID,然后通过用户ID,再去请求用户个人信息,获取到用户个人信息后,为了使用方便,我们需要将其缓存在本地文件系统,代码如下:
//先分别定义各个异步任务
Future login(String userName, String pwd){
…
//用户登录
};
Future getUserInfo(String id){
…
//获取用户信息
};
Future saveUserInfo(String userInfo){
…
// 保存用户信息
};
用在Future中:
login(“Rikka”,“******”).then((id){
//登录成功后通过,id获取用户信息
getUserInfo(id).then((userInfo){
//获取用户信息后保存
saveUserInfo(userInfo).then((){
//保存用户信息,接下来执行其它操作
…
});
});
})
我们可以使用Future来消除这种情况:
login(“Rikka”,“******”).then((id){
return getUserInfo(id);
}).then((userInfo){
return saveUserInfo(userInfo);
}).then((e){
//执行接下来的操作
}).catchError((e){
//错误处理
print(e);
});
也可以使用 async/await来消除这种情况:
task() async {
try{
String id = await login(“Rikka”,“******”);
String userInfo = await getUserInfo(id);
await saveUserInfo(userInfo);
//执行接下来的操作
} catch(e){
//错误处理
print(e);
}
}
- async
表示函数时异步的,定义的函数是一个 Future对象,可以使用teh来添加回调函数
- await
后面是一个Future任务,等待异步任务完成,才会往下走
await必须出现在async内部
3. Stream
Stream同样用于异步事件的处理,和 Future不同的是,它可以接受多个异步操作的结果。常用于网络内容下载、文件读写的场景。
Stream.fromFutures([
//1s后返回结果
Future.delayed(new Duration(seconds: 1), () {
return “hello 1”;
}),
//2s后抛出一个异常
Future.delayed(new Duration(seconds: 2), () {
throw AssertionError(“error”);
}),
Future.delayed(new Duration(seconds: 3), () {
return “hello 3”;
})
]).listen((data) {
print(data);
}, onError: (e) {
print(e.message);
}, onDone: () {});
输出结果为:
hello 1
Error
hello 3
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
总结
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的14套腾讯、字节跳动、阿里、百度等2021最新面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。




网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
14套腾讯、字节跳动、阿里、百度等2021最新面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
[外链图片转存中…(img-xVP2fmkW-1712265915580)]
[外链图片转存中…(img-L1SRsDmV-1712265915580)]
[外链图片转存中…(img-w0FnB6jg-1712265915580)]
[外链图片转存中…(img-pExQH2nU-1712265915581)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
更多推荐



所有评论(0)