async/await 与 Promise 详解

时光总嘲笑我的痴心妄想 提交于 2019-12-03 11:03:34

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 ,你只会得到一个语法错误。

 

怎么用?

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!