我在 HarmonyOS 发送http网络请求 中讲述了 HTTP请求的基本方式
然后 就带出了 回调地狱的问题
然后 上文 HarmonyOS 通过Promise 解决异步回调地狱问题 我们用Promise的解决方案 搞定了 这个问题
但是 Promise 这种写法 可读性其实没有那么优秀 没有搞定 Promise return规则的人甚至都看不懂

我们可以用另一个ES6知识点 async与await同异步转换
我们代码可以这样写

import http from '@ohos.net.http'
@Entry
@Component
struct Index {
  async aboutToAppear() {
    let httpReq = http.createHttp();
    let PromiseT = await httpReq.request(
      "http://localhost/books",
      {
        method: http.RequestMethod.GET
      }
    )
    let result = JSON.parse(`${PromiseT.result}`);
    let httpReq1 = http.createHttp();
    let data = await httpReq1.request(
      "http://localhost/books/"+result.data[0].id,
      {
        method: http.RequestMethod.GET
      }
    )
    console.log(JSON.stringify(data.result));
  }

  build() {
    Column({space: 30}) {

    }
    .width('100%')
    .height('100%')
  }
}

先给我们的 aboutToAppear 修饰一个 async
这样才能在它里面进行 await
然后 我们先请求 http://localhost/books 这里 我们加了 await 请求会一直等它返回 不会提前执行
然后 等它发挥了 用它返回的数据 第一条 0 下标的id 去作为路径参数 请求 “http://localhost/books/”+result.data[0].id,
运行结果如下
在这里插入图片描述
也是没有任何问题

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐