跳到主要内容

取消网络请求(ArkTS)

在远场通信服务的框架中,没有明确指定任何request的情况下,通过调用session.cancel,可以取消所有正在进行的网络请求。当开发者需要取消特定的一个网络请求时,可以使用session.cancel方法,并传入需要取消的请求,以实现这一目标。这样,开发者们就能根据具体需求,灵活地管理和控制网络请求的执行。

约束与限制

取消网络请求能力支持Phone、2in1、Tablet、Wearable设备。并且从5.1.1(19)开始,新增支持TV设备。

接口说明

具体API说明详见接口文档

接口名描述
cancel(requestToCancel?: RequestRequest[]): void

使用示例

  1. 导入模块。

    import { rcp } from '@kit.RemoteCommunicationKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  2. 创建会话并创建两个Request,分别发起请求,在请求完成后进行cancel操作。

    • 单独取消某个请求

      // 创建会话
      const session = rcp.createSession();
      // 创建request1、request2
      let request1 = new rcp.Request("https://www.example.com");
      let request2 = new rcp.Request("https://www.example.com");

      // 分别发起请求
      session.fetch(request1).then((response: rcp.Response) => {
      console.info(`The response1 code is ${response.statusCode}`);
      }).catch((err: BusinessError) => {
      console.error(`Request1 error code is ${err.code}, error data is ${err.data}`);
      })

      session.fetch(request2).then((response: rcp.Response) => {
      console.info(`The response2 code is ${response.statusCode}`);
      }).catch((err: BusinessError) => {
      console.error(`Request2 error code is ${err.code}, error data is ${err.data}`);
      })

      // 单独取消Request1、request2
      session.cancel(request1);
      session.cancel(request2);
    • 取消全部请求

      // 创建会话
      const session = rcp.createSession();
      // 创建request1、request2
      let request1 = new rcp.Request("https://www.example.com");
      let request2 = new rcp.Request("https://www.example.com");

      // 分别发起请求
      session.fetch(request1).then((response: rcp.Response) => {
      console.info(`The response1 code is ${response.statusCode}`);
      }).catch((err: BusinessError) => {
      console.error(`Request1 error code is ${err.code}, error data is ${err.data}`);
      })

      session.fetch(request2).then((response: rcp.Response) => {
      console.info(`The response2 code is ${response.statusCode}`);
      }).catch((err: BusinessError) => {
      console.error(`Request2 error code is ${err.code}, error data is ${err.data}`);
      })
      // 取消全部request
      session.cancel();