在异步代码同步化的时候,如何书写更优雅(关于 await)

问题描述

我要取到 size,在父作用域中使用,这样写会不会有什么问题?

async function(){
    ...
    let size = await this.fileSize(filePath).then(size => size)
    
}
fileSize(){
    return Promise((resolve) => {
        ...    
        resolve(size)
    })
}
阅读 1.8k
2 个回答

await只能在async修饰的函数(包括lambda表达式)或方法中调用,只要这行代码在async函数中,就没错,否则就会出错。

还有就是await后面应该是一个Promise对象的值,包括async函数的返回值。

async await 只是promise的语法糖,正常情况下用什么自己用的舒服就行,不过有时候Promise还是会有深层嵌套的问题,比如你上面这个例子,假如某一个接口需要依赖fileSize接口,那是不是里面又要套一层Promise,可能还有其他更复杂的回调函数等等,这时候用async await代码会让人看起来更舒服一点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题