鸿蒙 harmonyos 线程 并发 总结 async promise Taskpool woker(一)

好久不写了,这篇文章就写一遍,鸿蒙应用最基本的线程写法。

Promise和async/await提供异步并发能力,是标准的JS异步语法。异步代码会被挂起并在之后继续执行,同一时间只有一段代码执行,适用于单次I/O任务的场景开发,例如一次网络请求、一次文件读写等操作。

Promise是一种用于处理异步操作的对象,async/await是一种用于处理异步操作的Promise语法糖。

TaskPool(任务池)和Worker的作用是为应用程序提供一个多线程的运行环境,用于处理耗时的计算任务或其他密集型任务。可以有效地避免这些任务阻塞主线程,从而最大化系统的利用率,降低整体资源消耗,并提高系统的整体性能。

首先就用async写一个等待三秒更新ui的例子:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  async hello(){
    setTimeout(()=>{
      this.message='世界 你好';
    },3000);
  }
  aboutToAppear(){
    this.hello();
  }


  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}

好了,正文示例:

async网络请求:

async hello(){

    let httpRequest = http.createHttp();
    httpRequest.request("https://www.baidu.com",(err,data)=>{
      // console.info('error:' + JSON.stringify(err));
      this.message=JSON.stringify(data);
    });
  }

有异步就有同步,async与await搭配就可以实现同步,需要搭配promise使用,Promise有三种状态:pending(进行中)、fulfilled(已完成)和rejected(已拒绝),可对promise对象进行管理。Promise对象,同时传入一个带有两个参数的函数,通常称为executor函数,resolve和reject,分别表示异步操作成功和失败时的回调函数。

async hello(){
    let result = await new Promise((resolve) => {
      setTimeout(() => {
        resolve('你好世界!');
      }, 3000);
    });

    this.message=String(result)
  }
  aboutToAppear(){
    this.hello();
  }

并发下一篇见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值