需要执行的异步函数:有2种方式,普通带回调的函数,在函数之后最后必须调用回调函数传入err和result。如果err为空,则表明当前异步操作成功,将继续下一个异步执行,如果传入err不为空,则整个异步队列任务的状态即为false终止执行下面的任务。
另一种方式是es7的 async 函数,将return的值(即resolve的值)定义为此次的返回值,如果异常则自动将异常信息(即reject值)用于error信息
所有异步方法执行之后的回调函数,参数为err,results
如果方法中没有传入callback参数,则返回promise
方式一:传入callback
方式二:不传入callback,使用promise的then、catch方式
异步队列函数,同一时间并发执行的的函数的数量,仍属于异步,只不过做了每次执行的数量限制
异步串行执行,必须等到前一个异步任务状态sucess,才执行下一个任务。
async 是一个修饰符,被它定义的函数会默认的 返回 一个 Promise 的 resolve的值。
因此对 async 函数可以直接进行 then 操作,返回的值即为 then() 方法的传入函数。
await 同 async 一样,作为修饰符,但是它只能放在 async 内部使用。
它是 获取 Promise 中返回的内容, 即这个 Promise 函数中 resolve 或者 reject 的值。
所以,async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。
如下例:
比如说,这样一个场景:等待三个数据结果都返回,计算它们的和
async表示异步的意思,如果前面加上 async =false 就表示同步的方式运行,当程序读到这句话的要等到它运行完毕之后才执行下面的程序。而如果是 async =true 就表示异步的方式运行,不用等到当前语句返回结果就会继续下面的语句。这样运行更流畅,不会出现停顿的现象。