为了账号安全,请及时绑定邮箱和手机立即绑定

使用箭头和不使用箭头的可观察放置请求订阅有什么区别?

使用箭头和不使用箭头的可观察放置请求订阅有什么区别?

慕盖茨4494581 2023-03-18 17:29:51
如果标题措辞不当,我深表歉意。在我的角度代码库中,我可以看到两个不同的放置请求:  public Save() {    const types: string[] = this.getTypes.getCurrentTypes();    this.userTypeService      .updateTypes(this.userID, groups)      .subscribe(() => {        showToast("success", "User types Updated.");      });  }其中 updateTypes 是一个发出简单 httpPut 请求的函数。这和使用的重复函数有什么区别.subscribe( showToast("success", "user types updated");)基本上,订阅中 () => 的功能是什么?另外,有没有什么好的方法可以使用这种方式从调用中捕获错误?编辑:我想通了,下面的答案对我有用:public Save() {    const types: string[] = this.getTypes.getCurrentTypes();    this.userTypeService      .updateTypes(this.userID, groups)      .subscribe(() => {        result => showToast("success", "User types Updated.");        error => showToast("error", "Error");      });  }
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

.subscribe( 

  showToast("success", "user types updated");

)

如果删除分号以修复语法错误,那么这将showToast 立即调用并将返回值传递给.subscribe. 这种模式唯一有意义的方式是 ifshowToast是一个创建并返回其他函数的工厂函数,但鉴于名称,我认为这不太可能。假设showToast返回undefined,将不会创建订阅。


简而言之:这可能是一个错误。


您展示的第一种方法是创建函数并将该函数传递给订阅的正确方法,以便稍后调用它。


有什么好的方法可以从调用中捕获错误


要处理错误,您将传递第二个函数进行订阅,告诉它发生错误时您想做什么。例如:


.subscribe(

  (result) => {

    showToast("success", "user types updated")

  }, // <--- this function is the same as before, and handles the success case

  (error) => {

    showToast("failure", error)

  } // <--- this function is new and handles the error case.

);


查看完整回答
反对 回复 2023-03-18
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信