gpt4 book ai didi

angular - 为什么观察者方法被调用两次?

转载 作者:行者123 更新时间:2023-12-05 00:48:34 25 4
gpt4 key购买 nike

我有以下返回观察者的方法,但它被调用了两次:

public getClassesAndSubjects(school: number, whenDate: string): Observable<ClassesAndSubjects[]> {

console.log('1');

const observable = this.classService.GetClassesAndSubjects(school, whenDate);

console.log("2");

observable.subscribe(data => {
if (!data.hasOwnProperty('errors')) {
this.classesSubjects = data;

}
}, error => {
console.log("ERROR loading GetClassesAndSubjects: " + error);
});

console.log("3");

return observable;
}

我的意思是一行 const observable = this.classService.GetClassesAndSubjects(school, whenDate); 被调用两次并向服务器发送两次请求。

这样称呼:

this.classInstance.getClassesAndSubjects(school, date).subscribe(value => {
// TODO
});

最佳答案

发生这种情况是因为您订阅了 observable 两次,并且 observable 每次被订阅时都会执行。

改变这个:

observable.subscribe(data => {
if (!data.hasOwnProperty('errors')) {
this.classesSubjects = data;

}
}, error => {
console.log("ERROR loading GetClassesAndSubjects: " + error);
});

到这里:

observable.do(data => {
if (!data.hasOwnProperty('errors')) {
this.classesSubjects = data;

}
});

这样,您只是将一个运算符添加到您的流中,直到您在返回时订阅它才会执行。

关于angular - 为什么观察者方法被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com