wumi_blog icon indicating copy to clipboard operation
wumi_blog copied to clipboard

async 函数 async 和 await

Open 5Mi opened this issue 8 years ago • 0 comments

async 函数

  • async函数自带执行器。

  • async和await,比起星号和yield,语义更清楚了。async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果。

  • co模块约定,yield命令后面只能是Thunk函数或Promise对象,而async函数的await命令后面,可以是Promise对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。

  • 返回值是Promise。async函数的返回值是Promise对象,这比Generator函数的返回值是Iterator对象方便多了。你可以用then方法指定下一步的操作。

    进一步说,async函数完全可以看作多个异步操作,包装成的一个Promise对象,而await命令就是内部then命令的语法糖。

    async函数返回一个Promise对象。

    async函数内部return语句返回的值,会成为then方法回调函数的参数。

    正常情况下,await命令后面是一个Promise对象。如果不是,会被转成一个立即resolve的Promise对象。

async function someAsyncfn(){

}

参考

5Mi avatar Jun 15 '16 13:06 5Mi