async/await

1.async关键字只能放在函数前,被async润饰的函数返回的是一个promise,其值主动被包装在promise的resolve中

async function func() {  return 1}

2.await只能在async包裹的函数能应用,await会让JavaScript引擎期待直到promise实现并返回后果

async function f() {  let promise = new Promise((resolve, reject) => {    setTimeout(() => resolve("done!"), 1000)  });  let result = await promise; // 期待,直到 promise resolve (*)  alert(result); // "done!"}f();

async+await相当于promise.then,然而只会承受resolve、不会解决reject

3.try...catch应用try...catch在包裹await来解决promise返回的reject,当遇到reject会间接跳到catch中

    async function fucntionTry() {      try {        let promiseResolve =await  new Promise((resolve,reject) => {          setTimeout(()=>resolve('5秒'),5000)        })        console.log(promiseResolve)        let promiseReject = await  new Promise((resolve,reject) => {            reject('I am Reject')        })        let promiseEnd = await new Promise((resolve,reject) => {          resolve('Process End')        })        console.log(promiseEnd)      } catch(err) {        console.log('try catch ', err)      }    }    fucntionTry()

4.prmoise.all([])用于同时执行多个promise,留神promise.all中的promise是异步执行的

async function PromiseAll() {      try {        let promiseArray = await Promise.all([        new Promise((resolve,reject) => {resolve(1)}),        new Promise((resolve,reject) => {resolve(2)}),        new Promise((resolve,reject) => {resolve(3)}),        new Promise((resolve,reject) => {resolve(4)}),      ])      console.log('promiseArray', promiseArray)        let promiseErrArray = await Promise.all([          new Promise((resolve,reject) => {resolve(5)}),          new Promise((resolve,reject) => {reject(6)}),          new Promise((resolve,reject) => {resolve(7)}),          new Promise((resolve,reject) => {resolve(8)}),        ])      }catch(err) {        console.log('Error', err)      }    }    PromiseAll()

同样,也能够应用try...catch包裹着,来捕捉异样