美文网首页
async await学习笔记

async await学习笔记

作者: 天才_712d | 来源:发表于2019-05-09 16:48 被阅读0次

    定义:

    一句话,async 函数就是 Generator 函数的语法糖,很多人认为async是异步的终极解决方案;

    async/await是写异步代码的新方式,以前的方法有回调函数和Promise。

    async/await是基于Promise实现的,它不能用于普通的回调函数。

    async/await与Promise一样,是非阻塞的。

    async/await使得异步代码看起来像同步代码,这正是它的魔力所在。

    async/await是在Promise之后产生的,它和Promise诞生的目的都是为了解决“回调地狱”,至于什么是回调地狱:

    回调地狱

    Promise改进后:

    promise改进

    async/await改进后:

    async/await改进后

    async/await是在Promise的基础上做了改进,await是接收一个Promise对象,而当Promise执行到resolve()或者reject()的时候(fulfilled和rejected),await才会继续往下执行。

    所以关键点就是得是返回Promise对象的函数才行,不然await等你后面的函数执行完了,见你没返回Promise对象,那他就继续执行了,不管你了

    async await的实现

    同 Generator 函数一样,async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句

    例子

    上面代码是一个获取股票报价的函数,函数前面的async关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个Promise对象

    下面的例子,指定多少毫秒后输出一个值:

    例子

    async函数

    async函数会返回一个Promise对象。

    如果async函数中是return一个值,这个值就是Promise对象中resolve的值;

    如果async函数中是throw一个值,这个值就是Promise对象中reject的值。

    举个代码:

    例子 例子

    await

    await会暂停当前async函数的执行,等待后面的Promise的计算结果返回以后再继续执行当前的async函数

    相关文章

      网友评论

          本文标题:async await学习笔记

          本文链接:https://www.haomeiwen.com/subject/moxgoqtx.html