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

Apollo+Angular:如何阻止服务器重复返回数据

解决Apollo Mutate回调重复执行的问题

你可以借助RxJS的take(1)操作符来限制next回调只执行一次,这个操作符会在Observable发出第一个值后立即完成订阅,自动切断和服务器的连接,后续的返回数据就不会触发回调了。

修改后的代码示例

// 记得先导入take操作符
import { take } from 'rxjs/operators';

this.apollo.mutate({ 
  mutation: XXXXXXXX, 
  variables: { 
    instance_string: X, 
    accesstoken: X 
  } 
})
.pipe(take(1)) // 核心:添加这一行,只取第一个返回值
.subscribe({
   next: (data: any ) => {
     console.log("data returned from Server", data); 
     this.SaveData(data);
   },
   error: (err) => {
     this.presentToastFail(err);
   }
 });

补充说明

  • take(1)会保证只处理服务器返回的第一个数据,之后自动取消订阅,彻底忽略后续的循环返回。
  • 如果你希望必须获取到一个值(否则抛出错误),可以换成first()操作符,用法和take(1)一致,但如果服务器没有返回任何数据,会触发error回调。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:54:20