You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错:类型‘void’不存在‘toPromise’属性,如何解决删除后列表更新问题?

解决方案

问题核心是Delete方法未返回异步操作的可等待对象,导致getList会在删除请求完成前执行;同时因为原Delete返回void,调用.toPromise()自然会报错。

步骤1:修改Delete方法,返回Observable

让Delete返回服务调用的Observable,这样我们可以后续等待异步操作完成:

Delete(data: any) {
  this.param = {
    // 你的参数配置
  };
  // 返回Observable,并在操作完成后弹出成功提示
  return this.Service.delete(this.param).pipe(
    tap(() => {
      this.toastr.success('deleted successfully');
    })
  );
}

步骤2:等待删除完成后再更新列表

在确认删除的回调中,用await配合RxJS的firstValueFrom(RxJS 7+推荐)等待删除请求结束,再执行列表刷新:

// 先导入firstValueFrom
import { firstValueFrom } from 'rxjs';

delete(data: any) {
  Swal.fire({
    title: 'Are you sure?',
    text: 'You want to delete!',
    showCancelButton: true,
    confirmButtonText: 'Yes, Delete it!',
    cancelButtonText: 'No, keep it'
  }).then(async (result) => {
    if (result.isConfirmed) {
      // 等待删除请求完成
      await firstValueFrom(this.Delete(data));
      // 再更新列表
      this.getList();
    }
  });
}

如果你的项目使用RxJS 6及以下版本,可改用.toPromise()替代firstValueFrom:

await this.Delete(data).toPromise();

关键说明

  • 原Delete方法无返回值,this.Delete(data)得到的是void,这就是.toPromise()报错的原因;
  • 修改后Delete返回Observable,通过firstValueFrom或.toPromise()将其转为Promise,配合await就能确保删除操作完成后再执行列表刷新。

内容的提问来源于stack exchange,提问作者user3653474

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:36:19