HarmonyOS 鸿蒙Next关于async/await使用和setTimeout的问题,请求各位老师解答
HarmonyOS 鸿蒙Next关于async/await使用和setTimeout的问题,请求各位老师解答
import { promptAction } from ‘@kit.ArkUI’;
@Entry
@Component
struct Index {
@State message: string = ‘Hello World’;
funcA(){
setTimeout(()=>{
promptAction.showToast({
message:‘你好’
})
},3000)
}
funcB(){
promptAction.showToast(
{
message:‘世界~’
}
)
}
async funcC(){
await this.funcA()
this.funcB()
}
build() {
Column(){
Button(‘弹窗’)
.onClick(()=>{
this.funcC()
})
}
.justifyContent(FlexAlign.Center)
.width(‘100%’)
.height(‘100%’)
}
}
代码如上,为什么在funC里在funA使用了await的前缀,点击按钮后依旧是先弹出funB里的弹窗,而不是等待funA计时器里的事件完成之后再弹出呢
3 回复
await 不是写了就代表在这停顿,await 是 Promise 的语法糖, 应该这么写
```
funcA(): Promise<void> {
return new Promise((resolve) => {
setTimeout(() => {
console.log("你好~");
resolve()
}, 3000)
})
}
funcB() {
console.log("世界~");
}
async funcC() {
await this.funcA()
this.funcB()
}
```
settimeout它是非阻塞的 他只看自己的计时器