Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.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_Typescript - Fatal编程技术网

Javascript 如何重用代码并使其更加灵活?

Javascript 如何重用代码并使其更加灵活?,javascript,angular,typescript,Javascript,Angular,Typescript,我有以下代码: combineLatest(...this.filtersList.map((f) => f.filtersChanges)).subscribe( (selectedFilters: Filter[]) => { const filterUrlCombiner = new FilterUrlCombiner(); const filterUrlBuilders = selecte

我有以下代码:

combineLatest(...this.filtersList.map((f) => f.filtersChanges)).subscribe(
            (selectedFilters: Filter[]) => {
                const filterUrlCombiner = new FilterUrlCombiner();
                const filterUrlBuilders = selectedFilters
                    .filter(Boolean)
                    .map((filter) => new FilterUrlBuilder(filter, ComparingOperation.eq));
                const filterUrls = filterUrlBuilders.map((filter) => filter.buildStringUrl()).filter(Boolean);

                this.filterBy = filterUrlCombiner.combineUrl(filterUrls);
                this.settingsService.setExecutionFiltersSettings(selectedFilters);
            },
            (error) => {
                console.log('ERROR: ' + error);
            },
        );
这段代码侦听来自筛选器filtersChanges的更改,并将其作为数组返回最新的值

然后由FilterUrlCombiner和FilterUrlBuilder处理数组,作为完成结果,我在this.filterBy中获得字符串URL以及数组中的所有参数

我需要在另一个地方重新使用subscribe中包装的代码,但我不希望复制/过去。
如何重用代码并使其更灵活?

实际上是将回调函数传递给订阅的next和error参数。您可以单独定义回调并从订阅中调用它们

组合测试…this.filtersList.mapf=>f.filtersChanges.subscribe this.onNext.bindthis, this.onError.bindthis ; onNextselectedFilters:Filter[]{ 常量filterUrlCombiner=新的filterUrlCombiner; 常量filterUrlBuilders=selectedFilters .filterBoolean .mapfilter=>new FilterUrlBuilderfilter,ComparingOperation.eq; 常量filterUrls=filterUrlBuilders.mapfilter=>filter.buildStringUrl.filterBoolean; this.filterBy=filterUrlCombiner.combineUrlfilterUrls; this.settingsService.setExecutionFiltersSettingsselectedFilters; } OneError:有吗{ console.log'ERROR:'+ERROR; }
您需要使用函数传递该关键字的含义,以指向类成员变量。更多关于如何在回调中访问此关键字的信息。

那么你的意思是说你想在其他地方重用此方法,对吗?比如A组分、B组分和C组分等?当前您的登录名在组件A中,对吗?不,我只想继续订阅中的部分代码。我认为要执行以下操作,请创建一个函数导出函数getUrlFiltersselectedFilters:Filter[]{//将嵌入订阅的所有内容放在此处}这对在其他位置使用代码有何帮助?OnExtSelectedFilters:Filter[]{}我可以重复使用它anywhere@R.Richards:他想在另一个订阅中重用回调,或者直接调用它们。另外,如果你是删除OP原始评论的人,最好在继续删除评论之前提供反馈。我想我的问题应该更清楚。我真正的意思是:这对在另一个类中使用代码有什么帮助?但是,如果在这种情况下这不重要的话,这个问题是没有意义的。我不知道关于这篇文章的任何删除的评论。谢谢,这类评论在这里很快就会被删除。