如何将上下文设置为 rxjs 订阅回调函数?
How to set context to rxjs subscribe callback function?
我有这样的订阅:
this.test.subscribe(params => {
...some code
});
如果我传递回调函数而不是箭头函数,则缺少上下文。
我想将上下文绑定到订阅函数,但我从未见过。
是否可以不做类似
的东西
that = this
我会尝试回答,但我仍然不太清楚你的意思。
当你写:
const v = 42;
observable.subscribe(x => {
// here you have access to `v`
});
但是当你写的时候:
{
const v = 42;
observable.subscribe(f);
}
function f(x) {
// here you do not have access to `v`
}
这是应该的。如果你想让 f
看到不在其声明范围内的变量,那么你必须使它们成为参数并适当地传递它们。例如:
{
const v = 42;
observable.subscribe(x => f(x, v));
}
function f(x, v) {
// here you **do** have access to `v`
}
或者如果您可以在要捕获的变量的上下文中定义回调:
{
const v = 42;
observable.subscribe(x => f(x));
function f(x) {
// here you **do** have access to `v` because it is in scope
}
}
这是否回答了您的问题?它与 RxJS 无关,那些是纯粹的 JavaScript(和编程语言)概念。
我有这样的订阅:
this.test.subscribe(params => {
...some code
});
如果我传递回调函数而不是箭头函数,则缺少上下文。
我想将上下文绑定到订阅函数,但我从未见过。 是否可以不做类似
的东西that = this
我会尝试回答,但我仍然不太清楚你的意思。
当你写:
const v = 42;
observable.subscribe(x => {
// here you have access to `v`
});
但是当你写的时候:
{
const v = 42;
observable.subscribe(f);
}
function f(x) {
// here you do not have access to `v`
}
这是应该的。如果你想让 f
看到不在其声明范围内的变量,那么你必须使它们成为参数并适当地传递它们。例如:
{
const v = 42;
observable.subscribe(x => f(x, v));
}
function f(x, v) {
// here you **do** have access to `v`
}
或者如果您可以在要捕获的变量的上下文中定义回调:
{
const v = 42;
observable.subscribe(x => f(x));
function f(x) {
// here you **do** have access to `v` because it is in scope
}
}
这是否回答了您的问题?它与 RxJS 无关,那些是纯粹的 JavaScript(和编程语言)概念。