'u kullanarak yeni operatöre birleştirin. Kendimi sık sık gözlemlenebilir öğelere aynı işleç dizisini ekleyerek buluyorum.RxJS işleçlerini TypeScript
observable$
.do(x => console.log('some text', x))
.publishReplay()
.refCount();
Ben küçük yeniden kullanılabilir operatörü bu 3 operatörleri birleştirmek için bir yol (örneğin .cache('some text')
) arıyorum ben herhangi gözlenebilir için zincir bunu başaramaz. Bunu rxjs operatörleriyle yaptığım gibi rxjs/Gözlemlenebilir ve bu operatörü içe aktarabilmem için, bunu Typescript'te nasıl tanımlayabilirim?
import { Observable } from "rxjs/Observable";
import "rxjs/add/operator/do";
import "rxjs/add/operator/publishReplay";
// Compose the operator:
function cache<T>(this: Observable<T>, text: string): Observable<T> {
return this
.do(x => console.log(text, x))
.publishReplay()
.refCount();
}
// Add the operator to the Observable prototype:
Observable.prototype.cache = cache;
// Extend the TypeScript interface for Observable to include the operator:
declare module "rxjs/Observable" {
interface Observable<T> {
cache: typeof cache;
}
}
Ve böyle tüketmek:
Benzer bir sorum vardı, bu iyi bir çözüm gibi görünüyor. Bu sadece bir operatör zinciri olduğundan, hataları ele alıyor ve varsayılan olarak tamamlanıyor mu? Olması gerektiği gibi görünüyor, ama ben rxjs için yeniyim. – nPn
@nPn Yep, hatalar ve tamamlamalar, gözlemlenen gözlemlenebilir aboneler tarafından alınacaktır. Burada yapılması gereken bir şey yok. – cartant
Bu yaklaşımı denediğimde, şu hatayı alıyorum: EXCEPTION: Yakalanmadı (vaatte): Hata: ./DashboardComponent sınıfı DashboardComponent hatası - inline template: 2: 4 neden oldu: __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable __. Observable.of (...) .restrictToCommand bir işlev değil TypeError: __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable __. Observable.of (...). restrictToCommand bir işlev değildir. Herhangi bir fikir? –