为什么这种解构不起作用?

时间:2018-06-26 06:06:24

标签: javascript rxjs observable

我正在像这样创建一个可观察的物体:

return new Observable(sub => {
    const {next, complete, error} = sub;

    this.AuthHttp.get(`http://192.168.1.100:3000/api/users/${id}`)
        .subscribe(res => {
            let user = res.json();
            next(user);
            complete();
        }, e => {
            error(e.json());
        });
})

但是,当预期next()被调用时,前端没有任何反应。如果我对代码进行了较小的更改,以改为调用sub.next(),那么一切都会按预期进行。这表明底层代码没有缺陷,只是我引用next的方式。

我以前曾经在Observer类中看到过这种形式的分解(在在线示例中),那么我在这里做错什么了?

1 个答案:

答案 0 :(得分:5)

因为nexterrorcomplete方法是必须在对象实例上调用的对象方法

使用解构获取函数并随后调用这些函数时,这些调用没有上下文。

由于无法正常运行的原因,您无法执行尝试的操作:

const { toString } = new Date();
console.log(toString());

有关更多信息,请参见this issue