为什么不能在订阅方法中设置值?
Why cannot set value in subscribe method?
我试图通过设置一个值来显示微调器,但是虽然在设置该值时显示了它,但是在订阅方法中设置时却看不到它。这是正常行为吗?
search() {
this.isLoading = true; //when setting at here spinner is working
fromEvent(this.searchInput.nativeElement, 'keyup').pipe(
map((event: any) => { // get value
return event.target.value;
}),
filter(res => res.length >= this.minLength),
debounceTime(this.debounceTime),
distinctUntilChanged()
)
.subscribe(text => {
this.isLoading = true; //when setting at here spinner is NOT working
this.demoService.setSubject(text);
this.isLoading = false;
});
}
您应该在事件开始时将 isLoading 设置为 true,而不是等待 rxjs 序列完成,当您在订阅中设置它时,只需在它几乎是一个原子操作之后将其设置为 false 2 行,这使得人眼无法识别的旋转器。
search() {
fromEvent(this.searchInput.nativeElement, 'keyup').pipe(
tap(() => this.isLoading = true),
map((event: any) => { // get value
return event.target.value;
}),
filter(res => res.length >= this.minLength),
debounceTime(this.debounceTime),
distinctUntilChanged()
)
.subscribe(text => {
this.demoService.setSubject(text);
this.isLoading = false;
});
}
我试图通过设置一个值来显示微调器,但是虽然在设置该值时显示了它,但是在订阅方法中设置时却看不到它。这是正常行为吗?
search() {
this.isLoading = true; //when setting at here spinner is working
fromEvent(this.searchInput.nativeElement, 'keyup').pipe(
map((event: any) => { // get value
return event.target.value;
}),
filter(res => res.length >= this.minLength),
debounceTime(this.debounceTime),
distinctUntilChanged()
)
.subscribe(text => {
this.isLoading = true; //when setting at here spinner is NOT working
this.demoService.setSubject(text);
this.isLoading = false;
});
}
您应该在事件开始时将 isLoading 设置为 true,而不是等待 rxjs 序列完成,当您在订阅中设置它时,只需在它几乎是一个原子操作之后将其设置为 false 2 行,这使得人眼无法识别的旋转器。
search() {
fromEvent(this.searchInput.nativeElement, 'keyup').pipe(
tap(() => this.isLoading = true),
map((event: any) => { // get value
return event.target.value;
}),
filter(res => res.length >= this.minLength),
debounceTime(this.debounceTime),
distinctUntilChanged()
)
.subscribe(text => {
this.demoService.setSubject(text);
this.isLoading = false;
});
}