异步解决方案
(即你需要异步像同步一样执行,需要异步返回结果之后,再往下依据结果继续执行)
- XMLHttpRequest对象,依靠回调处理异步代码,不便于维护(回调地狱)
- promise 的.then方法附加回调函数,代码井然有序,(非阻塞)
- async / await 基于promise实现,兼容promise的API,使用方式更像同步(非阻塞)
async 声明一个异步函数(asynchronous)
- 自动将一个常规函数转换成一个promise,返回的也是一个promise对象
- 只有async函数内部的异步操作执行完,才会执行then方法指定的回调
- 异步函数内部可以使用await
await 暂停异步的功能执行(async wait)
- 放置在promise调用之前,await强制其他代码等待,直到promise返回结果
- 只能与promise一起使用,不适用与回调
- 只能在async函数内部使用
async函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而await命令就是内部then命令的语法糖。
- 怎样容错呢
1.犹豫await后面的promise运行结果可能是rejected,最好把await放入try{}catch{}中
2.Await后的异步操作,如果彼此没有依赖关系最好同时触发,在下面场景一会有介绍
3.Await只能在async函数之中,如果在普通函数中,会报错