async await学习笔记

2019-05-09  本文已影响0人  天才_712d

定义:

一句话,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函数

上一篇下一篇

猜你喜欢

热点阅读