San*_*hez 3 rxjs rxjs5 angular2-observables
我有这样的订阅:
this.test.subscribe(params => {
...some code
});Run Code Online (Sandbox Code Playgroud)
如果我通过回调函数而不是箭头函数,则上下文丢失。
我想将上下文绑定到订阅函数,但我从未见过。是否可以不做类似的事情
that = thisRun Code Online (Sandbox Code Playgroud)
我将尝试回答,但我仍然不确定您的意思。
当你写:
const v = 42;
observable.subscribe(x => {
// here you have access to `v`
});
Run Code Online (Sandbox Code Playgroud)
但是当你写:
{
const v = 42;
observable.subscribe(f);
}
function f(x) {
// here you do not have access to `v`
}
Run Code Online (Sandbox Code Playgroud)
这就是应该的方式。如果要f查看不在其声明范围内的变量,则必须使它们成为参数并适当地传递它们。例如:
{
const v = 42;
observable.subscribe(x => f(x, v));
}
function f(x, v) {
// here you **do** have access to `v`
}
Run Code Online (Sandbox Code Playgroud)
或者,如果可以在要捕获的变量的上下文中定义回调,请执行以下操作:
{
const v = 42;
observable.subscribe(x => f(x));
function f(x) {
// here you **do** have access to `v` because it is in scope
}
}
Run Code Online (Sandbox Code Playgroud)
这回答了你的问题了吗?它与RxJS无关,它们是纯JavaScript(和编程语言)概念。
| 归档时间: |
|
| 查看次数: |
3324 次 |
| 最近记录: |