这里的数据不是充当观察者吗?
不,在您的示例中,data 是发出的(“下一个”)值。
订阅 observable 时,可以传递三个不同的参数,它们是 next、error 和 complete 的处理程序。
示例:
someObservable$.subscribe(
next => console.log(`next value is: ${next}`),
err => console.log(`error is: ${err}`),
() => console.log('someObservable$ completed!)
);
在您的情况下,您仅向 subscribe() 方法提供第一个处理程序。您只需使用参数名称data 即可访问下一个值:
this.authservice.registerform(form).subscribe(
data => {
// 'data' refers to the emitted value
this.ifsuccess = true;
this.timer = setInterval(() => {
this.router.navigate(['']);
}, 1200);
}
);
如果您需要处理完成或错误,只需提供其他处理程序即可:
this.authservice.registerform(form).subscribe(
data => {
// 'data' refers to the emitted value
this.ifsuccess = true;
this.timer = setInterval(() => {
this.router.navigate(['']);
}, 1200);
},
error => console.log('error occurred!'),
() => console.log('registerform call completed')
);
也可以将完整的观察者对象传递给subscribe() 方法,而不是单独的处理程序方法:
const myObserver = {
next: val => console.log(`next val: ${next}`),
error: error => console.log(`error: ${error}`),
complete: () => console.log('complete!')
};
someObserver$.subscribe(myObserver);
这是一个带有示例的StackBlitz。