我正在像这样创建一个可观察的物体:
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类中看到过这种形式的分解(在在线示例中),那么我在这里做错什么了?
答案 0 :(得分:5)
因为next
,error
和complete
方法是必须在对象实例上调用的对象方法。
使用解构获取函数并随后调用这些函数时,这些调用没有上下文。
由于无法正常运行的原因,您无法执行尝试的操作:
const { toString } = new Date();
console.log(toString());
有关更多信息,请参见this issue。