ES8新特性
1、async和await
async 函数,使得异步操作变得更加方便,它其实就是 Generator 函数的语法糖。它有更好的语义,并且返回值是Promise。
async用于定义一个异步函数,该函数返回一个Promise或非Promise对象。
await用于一个异步操作之前,表示要“等待”这个异步操作的返回值。await也可以用于一个同步的值。
初始async:
async function test() {
console.log("test")
return new Promise((resolve, reject) => {
//resolve("suc-111")
reject("err-222")
})
}
//console.log(test()) //primise
let res = test()
res.then(res => {
console.log("success", res)
}).catch(err => {
console.log("err", err)
})
/*小结:
1. async返回值是非promise对象,状态为fulfilled,则进入then
2. async返回值是promise对象,状态为fulfilled 或 reject,则进入then 或 catch
*/
结合await:
function ajax1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
//resolve("data-111")
reject("err-111") //执行reject后会直接进入catch,没有catch就会报错
}, 1000)
})
}
function ajax2() {
return new Promise((resolve, reject) => {