angular – 使用异步管道在模板中的多个位置使用相同的observabl
发布时间:2020-12-17 08:01:13 所属栏目:安全 来源:网络整理
导读:在我的组件模板中,我在2个位置为同一个Observable调用异步管道。 我应该订阅它并在我的模板中使用返回的数组,或者在多个模板位置使用异步管道对同一个Observable对性能没有负面影响? 每次使用可观察的$ | async将为给定的observable $创建一个新的订阅(以
在我的组件模板中,我在2个位置为同一个Observable调用异步管道。
我应该订阅它并在我的模板中使用返回的数组,或者在多个模板位置使用异步管道对同一个Observable对性能没有负面影响?
每次使用可观察的$ | async将为给定的observable $创建一个新的订阅(以及一个单独的流) – 如果这个observable包含有大量计算或休息调用的部分,那么这些计算和休息调用将针对每个异步执行 – 所以是的 – 这可以有性能影响。
但是,通过使用 默认情况下,异步管道不共享订阅的原因只是灵活性和易用性:简单的.share()编写比创建一个全新的流要快得多,如果要由它们共享它们将是必需的。默认。 这是一个简单的例子 @Component({ selector: "some-comp",template: ` Sub1: {{squareData$ | async}}<br> Sub2: {{squareData$ | async}}<br> Sub3: {{squareData$ | async}} ` }) export class SomeComponent { squareData$: Observable<string> = Observable.range(0,10) .map(x => x * x) .do(x => console.log(`CalculationResult: ${x}`) .toArray() .map(squares => squares.join(",")) .share(); // remove this line and the console will log every result 3 times instead of 1 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |