async
- 作用: async函数返回一个
Promise
对象,无论内部有没有await
关键字.
await
- 作用: await等待的是一个表达式,这个表达式的计算结果是
Promise
对象 或者是其他值 (await可以等待任意表达式的结果) - 如果await的不是一个
Promise
对象, 那 await表达式的运算结果就是他等待的东西 - 如果await的是一个
Promise
对象,await
就会开始工作,它会阻塞后面的代码,等着Promise
对象resolve
,然后得到resolve
的值,作为await
表达式的运算结果
这就是await
必须用在async
函数中的原因,async
函数调用不会造成阻塞,它内部所有的阻塞都被封装在一个Promise
对象中异步执行
async/await 对比 Promise
// async/await 方式
async getBooks(id){
const books = await boolModel.fetch()
return books.filter(b => b.bookId == id) // 但是如果外部调用getBooks还需要返回books,依然需要.then()来得到值,因为 getBoos是被 async修饰的
}
// promise 方式
getBooks(id){
return bookModel.fetch()
.then(books => books.filter(b => b.bookId == id))
}
通过对比可以得知: await处理了Promise返回的结果,不需要再使用.then()来出来Promise的结果