RxJs 自定义运算符无法访问“this”

Or *_*yev 6 javascript rxjs typescript ngrx angular

我创建了一个访问的自定义运算符,this但它似乎总是未定义,即使我传递给this函数bind

自定义运算符

function shouldLoadNewOptimizationData() {
    return filter(function([p1,p2,p3]) {
       // some logic
       if(){
          this.store.dispatch()...
       }
    })
}
Run Code Online (Sandbox Code Playgroud)

自定义运算符用法

effect = createEffect(()=> this.actions$.pipe(
    ofType(//action type),
    withLatestFrom(
        //...selectors
    ),
    shouldLoadNewOptimizationData().bind(this),
    // more operators..
    )
)

Run Code Online (Sandbox Code Playgroud)

Eli*_*seo 5

通常,rxjs 自定义运算符会妨碍您

function myOperator<T>(source: Observable<T>) {

  ...some logic...

  return source; //or return source.pipe(....)
}
Run Code Online (Sandbox Code Playgroud)

或者带参数

function myOperator<T>(...args) {
  return function<T>(source: Observable<T>): Observable<T> {
    ..some logic..
    return source //or return source.pipe(....)
  };
}
Run Code Online (Sandbox Code Playgroud)

请参阅有关此内容的重要链接


Mox*_*arm 0

更改为箭头功能

function shouldLoadNewOptimizationData() {
    return filter(([p1,p2,p3]) => {
       // some logic
       if(){
          this.store.dispatch()...
       }
    })
}
Run Code Online (Sandbox Code Playgroud)