async await用法不生效
时间: 2023-10-17 21:34:02 浏览: 81
详解vue中async-await的使用误区
在使用async/await时,有一些需要注意的地方。首先,要想await生效,后面的异步操作必须返回一个promise,否则即使代码是异步的,await也不会停留等待异步操作完成。所以,await依赖于promise来判断异步操作是否执行结束。
其次,在使用await后的Promise异步操作中,如果想再接一个await而不报错,需要将then的成功回调函数声明为async函数。这样做可以解决许多问题。例如,在一个async函数内部,可以使用await来等待另一个async函数的返回值。
举个例子,假设有一个comment函数,其中包含多个异步操作。我们可以使用async/await依次执行这些异步操作。在这个例子中,我们可以将messageModel.getMessage方法的then回调函数声明为async函数,并在其中使用await来等待messageModel.getCommentLength方法的返回值。
以下是解决代码的例子:
```javascript
async function comment(req, res) {
await messageModel.getMessage([page]).then(async result => {
for (let i = 0; i < result.length; i++) {
await messageModel.getCommentLength([result[i].id]).then(resp => {
console.log(resp);
});
}
});
}
```
总结来说,为了让被执行的方法返回promise,我们可以给方法加上async关键字,这样在使用async/await时,方法会按照顺序依次执行。
需要注意的是,以上方法是针对使用JavaScript编写的情况。如果您使用的是其他编程语言,可能会有不同的用法和规则。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [async await不生效、没有作用的原因](https://blog.csdn.net/RkHker/article/details/105668308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [vue中async/await不生效的问题](https://blog.csdn.net/qq_37899622/article/details/129988350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [Custom-ReactJS-Dropdown-Components:用于ReactJS的自定义下拉组件](https://download.csdn.net/download/weixin_42181888/18450005)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文