Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 订阅数据到达后如何正确运行方法?_Javascript_Angular_Rxjs - Fatal编程技术网

Javascript 订阅数据到达后如何正确运行方法?

Javascript 订阅数据到达后如何正确运行方法?,javascript,angular,rxjs,Javascript,Angular,Rxjs,我想找到运行多个方法的最佳方法,当一些数据从可观察数据(例如HTTP请求)到达时,我需要这些数据来调用这些方法 我目前有两种方法,但在我看来,这两种方法都有一些缺陷 订阅内的调用方法: 我不喜欢这种方法,因为当您需要调用许多方法时,有很多行代码。当然,我可以将这3个方法封装在另一个函数中,并只调用该函数,但这是一个好的解决方案吗?我不确定 提出可观察的请求并单独订阅: 在这里,我不确定多次订阅同一个操作符是否是正确的方法 我将非常感谢关于这个问题的任何建议/文章。第一种方法绝对没有错。如果你必须

我想找到运行多个方法的最佳方法,当一些数据从可观察数据(例如HTTP请求)到达时,我需要这些数据来调用这些方法

我目前有两种方法,但在我看来,这两种方法都有一些缺陷

  • 订阅内的调用方法:
  • 我不喜欢这种方法,因为当您需要调用许多方法时,有很多行代码。当然,我可以将这3个方法封装在另一个函数中,并只调用该函数,但这是一个好的解决方案吗?我不确定

  • 提出可观察的请求并单独订阅:
  • 在这里,我不确定多次订阅同一个操作符是否是正确的方法


    我将非常感谢关于这个问题的任何建议/文章。

    第一种方法绝对没有错。如果你必须做3件事,那么没有办法避免最终写3行来做这3件事。把它隐藏在额外的抽象后面只会把你的3个东西变成3*N个东西


    看看第一个方法中的代码比第二个方法中的代码少了多少。在你需要抽象之前不要抽象。第二种方法更适合于有时但并非总是需要灵活行动的情况。通过将操作拆分为单独的订阅,您可以更好地控制哪些操作在何时运行。

    第一种方法绝对没有问题。如果你必须做3件事,那么没有办法避免最终写3行来做这3件事。把它隐藏在额外的抽象后面只会把你的3个东西变成3*N个东西


    看看第一个方法中的代码比第二个方法中的代码少了多少。在你需要抽象之前不要抽象。第二种方法更适合于有时但并非总是需要灵活行动的情况。通过将操作拆分为单独的订阅,您可以更好地控制哪些操作何时运行。

    老实说,我看不出有什么问题,只是对如何构造代码和选择什么的偏好取决于开发人员和您正在使用的代码的上下文。老实说,我看不出有什么问题,只是对于如何构造代码以及选择什么的偏好取决于开发人员和您正在使用的代码的上下文。感谢您澄清此问题!这是最直观的方法,但我认为这不是最佳实践。显然我错了:)谢谢你澄清这个问题!这是最直观的方法,但我认为这不是最佳实践。显然我错了:)
      getSomeData(): void {
        this.httpService.getData.subscribe(data => {
            this.firstMethod(data);
            this.secondMethod(data.partOfData);
            this.thirdMethod();
        }
      }
    
      getSomeData(): void {
        this.dataObservable = this.httpService.getData.pipe(share());
      }
    
      firstMethod() {
        dataObservable.subscribe(data => {...}
      }
    
      secondMethod() {
        dataObservable.subscribe(data => {...}
      }
    
      thirdMethod() {
        dataObservable.subscribe(data => {...}
      }