异步中 await 和 then 的区别,哪个更好

2021-04-23 08:48:34 +08:00
 James369
await 虽然简洁。因为 await 需要等待返回才继续向下执行,如果是较耗时的操作就得等待。


方式一:
await u = login();
getUserInfo(u);
otherTask(); // 必须等待 login()返回。


方式二:
login().then((u) {
getUserInfo(u);
);
otherTask(); //可以并行

我觉得 then 更加符合逻辑。
5318 次点击
所在节点    Flutter
46 条回复
tonyaiken
2021-04-24 00:04:22 +08:00
@IGJacklove 我们公司就是这样写的,嵌套很多层异步。
IGJacklove
2021-04-24 00:20:10 +08:00
@tonyaiken 这代码能看。。。。不可能不用 await 只嵌套吧。
tonyaiken
2021-04-24 03:41:14 +08:00
@IGJacklove 能看,可以分离出单独的方法。就变成方法嵌套方法。
tonyaiken
2021-04-24 03:45:41 +08:00
@IGJacklove 这是我们公司开源的内部使用的异步框架 https://github.com/linkedin/parseq
xiubin
2021-04-24 12:05:44 +08:00
笑死了。。一个苦逼 iOS er 一直等带能使用 await 。。。居然举这么个例子。。
williamx
2021-04-30 07:42:03 +08:00
使用的场景不同,很多时候就是要等上一条执行完了才执行下一条,有时候不需要等待只需要执行完的通知,那么就用 then,否则就是 await,有时侯不想每个都加 async 或者有些函数不能加,那只能用 then 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX