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%')
  }
}

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐