ArkTS并发-异步并发 (Promise和async/await)
函数内部可包含零个或多个await关键字,await会暂停执行,直到关联的Promise完成状态转换(fulfilled或rejected)。使用async关键字声明异步函数,并使用await关键字等待Promise的解析(fulfilled或rejected),以同步方式编写异步操作的代码。Promise是一种用于处理异步操作的对象,可将异步操作转换为类似同步操作的风格,便于代码编写和维护。as
ArkTS官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/async-concurrency-overview
Promise是一种用于处理异步操作的对象,可将异步操作转换为类似同步操作的风格,便于代码编写和维护。
async/await是用于处理异步操作的Promise语法糖,使编写异步代码更加简单和易读。
Promise通过状态机制管理异步操作的不同阶段,有三种状态:pending(进行中)、fulfilled(已完成,也叫resolved)和rejected(已拒绝)。创建后处于pending状态,异步操作完成后转换为fulfilled或rejected状态。
Promise提供了then、catch、finally方法来注册回调函数,以处理异步操作的成功或失败结果。
使用async关键字声明异步函数,并使用await关键字等待Promise的解析(fulfilled或rejected),以同步方式编写异步操作的代码。
async函数返回Promise对象,实现异步操作。函数内部可包含零个或多个await关键字,await会暂停执行,直到关联的Promise完成状态转换(fulfilled或rejected)。
等待异步操作时,需将操作包在async函数中,并搭配await使用,且await关键字只在async函数内有效。同时也可使用try/catch块来捕获异常。
async function myAsyncFunction(): Promise<string> { //async关键字声明异步函数
try {
const result: string = await new Promise((resolve: Function) => { //await关键字等待Promise的解析
setTimeout(() => {
resolve('Hello, world!');
}, 3000);
});
console.info(result); // 输出: Hello, world!
return result;
} catch (e) {
console.error(`Get exception: ${e}`);
}
}
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(async () => { ////async关键字声明异步函数
let res = await myAsyncFunction(); //await关键字等待Promise的解析
console.info('res is: ' + res);
})
}
.width('100%')
}
.height('100%')
}
}
更多推荐



所有评论(0)