[文章地址](https://medium.freecodecamp.org/avoiding-the-async-await-hell-c77a0fb71c4c),前端的发展就是一个大逃亡,刚逃离了 callback 地狱,又要开始逃离 async/await 地狱。
Activity
atian25 commentedon May 2, 2018
@popomore 来,吐槽下。
Ariex commentedon May 7, 2018
代码写成这样,只能怪自己学艺不精吧?
等价的应该是
回调的问题在于,它必须是嵌套的。而async和await可以在一定程度上把异步代码写的像是同步的,从而达到更好的可读性。
ascoders commentedon May 7, 2018
@Ariex 用 .then 确实会简化点
Ariex commentedon May 7, 2018
@ascoders 并不是用
then
代码能简化,而是作为例子里面的代码实在是没有按照async/await
的要求来实现,如果随便写一些乱七八糟的代码就能拿来当作槽点的话,那就真是一念一地狱了。我觉得文中以及原文中提到的这些问题,根本不是
async/await
的问题,而是写代码的人需要对自己使用的东西有正确的基础的了解。ascoders commentedon May 7, 2018
@Ariex 说的有一定道理,但是你能写好,其他人呢。?
希望能减少一些矫枉过正的评论,让其他读者可以平静的看到滥用带来的问题,不要陷入无谓的争斗。
fantix commentedon May 7, 2018
各一朵小红花。
还没写完,也还没来得及翻译,当做基础用于将来分享,请批评。
ae6623 commentedon May 7, 2018
@Ariex 对于一个刚开始接触async/await的前端小白来说,确实缺少一些成功的范例来引导《如何正确的使用async/await》,如果一个老手已经学会了轻车熟路,逃避async/await的陷阱,不妨来 一篇/几语 来指引一下。
atian25 commentedon May 7, 2018
@ascoders 我赞同 @Ariex 的观点,这跟不能跟 callback hell 并论的,后者是因为语言缺陷导致开发者容易陷入。但 async/await 的话,从文中举得例子来说,我觉得更多是开发者的问题,还有就是 Promise 的锅(逃。。。
ascoders commentedon May 7, 2018
@atian25 文中的例子是有意而为的,因为 callback 和 async/await 都经常出现在业务代码中,而业务项目又经常在倒排,有时候项目室热起来,内心一急躁,就写出连珠炮的 await。。
atian25 commentedon May 7, 2018
还是举个稍微正常一点的例子吧,文中的 a b c 这样的太简陋了,如果能举一个带有含义的单词,并举出存在以下的场景,再来讨论会更有聚焦一点
baxtergu commentedon May 7, 2018
这篇文章的解读的前半部分使用到了英文原文的例子,后半部分采用了简化版的抽象例子。
我觉得英文原文里结合了生活实际的例子产生的歧义可能会小一点。
原文链接:https://medium.freecodecamp.org/avoiding-the-async-await-hell-c77a0fb71c4c
ascoders commentedon May 7, 2018
用户详情页,根据用户 id 拿用户信息、历史文章列表、最近更新的文章列表;同时加载第三方问答插件,加载完毕后上报插件展现打点日志。
如果回调的方式写,是这样的:
换成 promise:
如果换成 async/await,最好拆两个函数:
如果写代码的时候比较急躁,可能会想在一个函数里快速完成任务:
这样 initQA() 就滞后了。
ascoders commentedon May 7, 2018
@xpal7512 如果用 callback 方式,就算写的急躁,顶多是不雅观,而不会出现性能问题。
23 remaining items