多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
* `async`是 ES7 才有的与异步操作有关的关键字,和 Promise , Generator 有很大关联的。 * `async`关键字可以声明一个异步函数,该异步函数返回一个 Promise 对象。 * 如果`await`关键字修饰的函数返回一个 Promise 对象,则等待该函数执行完后才开始执行剩余的代码,并且返回 Promise 对象处理的结果。 * 如果`await`关键字修饰的函数返回非 Promise 对象,则立即执行并返回该函数处理的结果。 * `await`关键字必须在`async`函数内部使用,在其他地方使用会语法错误。 下面是几种使用案例。 **1. `async`异步函数** ```java /** * 声明async异步函数 */ async function fun01() { return 'fun01' } /** * 因为async函数返回的是一个Promise对象,所以可以调用Promise对象的then函数获取 * async函数的返回值 */ fun01().then((value) => { console.info(value) //fun01 }) ``` <br/> **2. `async`与`await`配合使用:`await`函数返回非Promise对象** ```java * 一个普通函数 */ const fun02 = () => { return 'fun02' } async function fun03() { //在async函数中使用await,直接返回函数fun02的处理结果 const value = await fun02() console.info(value) //fun02 return value } fun03().then((value) => { console.info(value) //fun02 }) ``` <br/> **3. `async`与`await`配合使用:`await`函数返回Promise对象** ```java /** * 返回Promise对象的函数 */ const fun04 = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve('fun04') }, 2000) }) } async function fun05() { //fun04返回的是Promise,需要等待2000ms才继续往下执行,并返回Promise对象处理的结果 const value = await fun04() console.info('fun05', value) //等待2000ms后输出:fun05 fun04 return value } fun05().then((value) => { //等待2000ms后才获取值 console.info(value) //fun04 }) ```