当前位置: 首页>数据库>正文

网络管理-async、await

1.1、应用权限

??ATM (AccessTokenManager) 是HarmonyOS上基于AccessToken构建的统一的应用权限管理能力
应用权限保护的对象可以分为数据和功能:

  • 数据包含了个人数据(如照片、通讯录、日历、位置等)、设备数据(如设备标识、相机、麦克风等)、应用数据。
  • 功能则包括了设备功能(如打电话、发短信、联网等)、应用功能(如弹出悬浮框、创建快捷方式等)等。

根据授权方式的不同,权限类型可分为system_grant(系统授权)和user_grant(用户授权)

  • 配置文件权限声明
{
  "module" : {
    // ...
    "requestPermissions":[
      {
        "name" : "ohos.permission.INTERNET"
      }
    ]
  }
}
  • 向用户申请授权
{
  "module" : {
    // ...
    "requestPermissions":[
      {
        "name" : "ohos.permission.ANSWER_CALL" //允许应用接听来电
      }
    ]
  }
}

1.2、HTTP请求

使用 @ohos.net.http 模块发请求

// 申请网络权限
"requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
    ]
import http from '@ohos.net.http'
import request from '@ohos.request'
@Entry
@Component
struct HttpCase {
  aboutToAppear() { // 页面初始化之后会执行
    this.getData()
  }
  async getData() {
    // 第一种取promise结果的方法
    try {
      const req = http.createHttp()
      // await会强制等待后面的promise进行resolve,只有执行成功才会走下一行代码,要求父级函数必须标记为async
      const res = await req.request("https://zhoushugang.gitee.io/fe2022/takeaway.json")
      // 执行成功的代码  async await让我们用同步的方式写异步, 必须配套使用,要求父级函数必须标记为async
      // async标记后面的函数是一个异步函数,不会阻塞主线程,getData不会阻塞主线程的执行
      AlertDialog.show({message:res.result as string })
    } catch(e) { // 处理失败的代码
    }
    // 第二种取promise结果的方法
    // request返回promise,通过then拿到结果
    // const req = http.createHttp()
    // req.request("https://zhoushugang.gitee.io/fe2022/takeaway.json")
    //   .then((result) => {
    //     AlertDialog.show({message:result.result as string }) // as string代表类型断言
    //   })
    //   .catch((e)=>{
    //   })
  }
  build() {
    Row() {
      Column() {
      }
      .width('100%')
    }
    .height('100%')
  }
}

https://www.xamrdz.com/database/6n81994016.html

相关文章: