pomise和async/await的区别

191 阅读1分钟

简要回答

  1. async 告诉程序这是一个异步,awiat 会暂停执行async中的代码,等待await 表达式后面的结果,跳过async 函数,继续执行后面代码

  2. async 函数会返回一个Promise 对象,那么当 async 函数返回一个值时,Promise 的 resolve 方法会负责传递这个值;当 async 函数抛出异常时,Promise 的 reject 方法也会传递这个异常值

  3. await 操作符用于等待一个Promise 对象,并且返回 Promise 对象的处理结果(成功把resolve 函数参数作为await 表达式的值),如果等待的不是 Promise 对象,则用 Promise.resolve(xx) 转化

  4. async/await相对于promise来讲,写法更加优雅,异步编程的最高境界就是不关心它是否是异步。async/await很好的解决了这一点,将异步强行转换为同步处理

  5. async/await 相比原来的Promise的优势在于处理 then 链,不必把回调嵌套在then中,只要await 即可

  6. reject状态:

  • promise错误可以通过catch来捕捉,建议尾部捕获错误, 
  • async/await既可以用.then又可以用try-catch捕捉