首页 / 科技百科 / 正文

promise和async的区别 

Promise和async的主要区别如下:

1. 返回类型:执行async函数返回的都是Promise对象。如果return的不是promise对象,那么返回的是成功的promise对象;如果返回的是error,那么返回的是失败的Promise对象。而Promise则需要通过链式操作.then和.catch来处理成功和失败的情况。

2. 异常处理:Promise的异常处理需要在链式操作中进行,而async则需要在函数内进行。但现在catch的成本较低,所以这个区别影响不大。

3. 语法:Promise是显式的异步,而Async/await让代码看起来是同步的,但依然需要注意异步。

4. 实现:Async/await是基于promise实现的,是生成器函数的语法糖,拥有内置执行器,不需要额外的调用,直接会自动调用并返回一个promise对象。

5. 进化:Promise是es6里的,而async是es7的。Async函数和Array.forEach等结合,很多tc39提案都在路上或者已经实现,处于上升期,而promise也就那样了。

6. 并行操作:Promise有很多并行神器,比如Promise.all\Promise.race等,这些是async没法搞定的。

7. 兼容性:Promise即使不支持es6,你依然可以用promise的库或polyfil,而async就很难做,成本会高很多。

如有侵权请及时联系我们处理,转载请注明出处来自