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

标签 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 类一起使用(在在线示例中),那么我在这里做错了什么?

最佳答案

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

当您使用解构来获取函数并稍后调用这些函数时,调用是没有上下文的。

你不能做你尝试过的事情,同样的原因是这行不通:

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

有关详细信息,请参阅 this issue .

关于javascript - 为什么这种解构不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51035891/

相关文章:

angular - import {Observable} from 'rxjs/Observable' 和 import {Observable} from 'rxjs' 有什么区别吗?

javascript - Observable<unknown> 不可分配给 Observable<{}>。它缺少以下属性,如名称、电子邮件、isAdmin

dictionary - 可在 map 上观察以检测何时添加、更新或删除条目

javascript - 将 ngModel 绑定(bind)到表达式的值

Angular 6 和 RxJS 6 重大变化

angular - 仅当第一次失败时才执行第二次 http 调用

ios - RX Swift - API 的并行执行

javascript - 使用 Javascript 中的 JSFL 脚本返回值

javascript - 表达式类型(数量)

javascript - 无法比较星期五日期 JavaScript