Skip to content

Latest commit

 

History

History
32 lines (17 loc) · 1.61 KB

03-1-async-function-vs-promise.md

File metadata and controls

32 lines (17 loc) · 1.61 KB

Async Function VS Promise

异步函数的优势

异步函数对异步编程来说,有非常很大的提升。尤其在 try/catch/throw 方面,异步函数可以延续以前的标准写法,还能正常检索堆栈信息,优势非常大。

Promise 的价值

不过就目前来看,Promise (暂时)并不会被完全取代。

异步函数依赖 Promise

异步函数返回的是一个 Promise 对象;await 关键字只能等待 Promise 对象完成操作。

所以 Promise 的知识都还有效,大家也必须学习 Promise,才能更好的使用异步函数。

Promise 能更好的提供队列操作,并且在对象之间传递

Promise 本身是一个对象,所以可以在代码中任意传递。这意味着我们可以在程序的任何位置使用和维护队列,非常方便。

比如我们做一些办公产品,用户可能先做了 A,然后又做了 B。A 和 B 之间存在很强的先后顺序,不能乱。这个时候,队列的价值就能充分提现出来。

异步函数的支持率还不够

从上一节最后的截图可以看到,虽然异步函数的支持率已经很高了,但是在 iOS 10.2、Android 4 等关键平台上,还没有原生实现。这就需要我们进行降级兼容。

然而异步函数的降级代码很难写,Babel 转译后至少要增加3000行,对于一些轻量级应用来说代价不小。如果应用本身不大,或者异步操作并不复杂,用 Promise 可能是更好的选择。

小结

Promise 和异步函数之间不存在替代关系,根据需求和场景选择合适的技术,永远不会错。