async
是什么?
async 中文翻译过来是 “异步,非同步,异步通信” 的意思。
async 是 ES7 才有的与异步操作有关的关键字,和 Promise , Generator 有很大关联的。
注:ES7/8/9 都是 ES6 的补充
怎么用?
语法:
async function name([param[, param[, ... param]]]) { statements } // name: 函数名称。 // param: 要传递给函数的参数的名称。 // statements: 函数体语句。
返回值:
async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。
async function helloAsync(){ return "helloAsync"; } console.log(helloAsync()) // Promise {<resolved>: "helloAsync"} helloAsync().then(v=>{ console.log(v); // helloAsync })
既然说到了 async 函数,那就必然少不了要说说 await 。
await
是什么?
await 中文翻译过来的意思是 “等待,暂停函数的执行,等待异步任务完成”
async 函数中 可能 会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后(这个异步操作是 Promise对象的返回结果 ),得到了 Promise 对象返回结果之后,恢复 async 函数的执行并返回解析值。如果 async 函数中 没有 await 表达式,这个函数就跟 普通的函数一样没有太大的差别了。
await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误。
怎么用?