0
TypeScriptを使用しているNG2アプリケーションで作業しており、Amazon AWS SDKの呼び出しの周りにオブザーバブルを作成したいとします。残念ながら、this
はObservableにバインドされました。 this
を親クラスにバインドしたままにしておきたい場合は、どうすればよいですか?RxJS(TypeScript)5.0でObserverを作成すると、「this」にバインドされません。
TypeScriptを使用しているNG2アプリケーションで作業しており、Amazon AWS SDKの呼び出しの周りにオブザーバブルを作成したいとします。残念ながら、this
はObservableにバインドされました。 this
を親クラスにバインドしたままにしておきたい場合は、どうすればよいですか?RxJS(TypeScript)5.0でObserverを作成すると、「this」にバインドされません。
あなただけのobserver関数をラップし、それにあなたの外this
をバインドすることができます。
var foo = Observable.create((function(observer) {
this.s3.upload({
Key: "value"
}, (err, data) => {
if (err) {
console.log(err);
return
}
observer.next(data)
});
}).bind(this));
これは、関数の意志の中に包まれた関数は、古典的な機能ではなく、矢印機能、またはthis
であることを確認することが重要です最終的にはwindow
となります。
シンプル(私は思う)、矢印演算子を使用しないでください。昔ながらの匿名のjavascript関数を作成するだけです。次に、 'this'をある変数にバインドし、アクセスが必要な場合はその変数を使用します。 –
@JeffMercadoはい、うまくいきましたが、私はハックに関与していないソリューションを期待していました。 Arrow関数は 'this 'の代理変数を作成した場合でも同様に動作します –
なぜそれが「ハック」だと思いますか?矢印演算子は 'this'に束縛されるように設計されています。それはあなたが正反対の問題を解決します。 –