#angular #rxjs #rxjs-pipeable-operators
Вопрос:
Я добавил нижеприведенные rxjs, и первый сделанный звонок-это сообщение. После добавления takeUntil(onDestroy) API post возвращает отмененную опцию, как показано ниже
[3
Если строка takeuntil удалена, сообщение возвращает статус успешного выполнения — 204. Почему возникает эта проблема ?
Комментарии:
1.
takeUntil
должен быть последним элементом вpipe
цепочке, такжеthis.onDestroy
должен бытьSubject
похож:onDestroy = new Subject();
2. что
OnDestroy
такое ? тема ? где ты будешь делать это дальше ?3. @robert Я попытался добавить takeUntil в канал после последней карты переключения или после карты , но все равно получаю ту же ошибку
4. @Stavm да, это тема и отписался в ngOnDestroy ngOnDestroy() { this.onDestroy.next(); this.onDestroy.complete(); }
Ответ №1:
Я могу порекомендовать вам этот код для отмены подписки :
@Component(...)
export class MyComponent implements OnDestroy {
private unsubscribe: Subject; // boilerplate
constructor(private heroService: MyApiService) {}
public ngOnInit(): void {
this.subscription = this.heroService
.callSomeServerApi()
.pipe(takeUntil(this.unsubscribe)) // boilerplate
.subscribe(() => window.location = 'https://another.site`)
}
public ngOnDestroy(): void {
this.unsubscribe.next(); // boilerplate
this.unsubscribe.complete(); // boilerplate
}
}
Комментарии:
1. Спасибо за ответ @Rebai Ahmed, но я попробовал тот же callSomeServerApi, который создает API для отправки сообщений, в котором я получаю отмененный ответ в статусе. Также используется та же самая котельная плита.
2. Значит, тебе это не помогает?
3. Нет, как я уже упоминал, я получаю отмененный ответ
4. Что вы подразумеваете под отмененным ответом? разве вы не получили результат?
5. Получите ответ, как в исходном вопросе (см. скриншот). В инструментах разработчика chrome. Я не получаю результата. Ответ о состоянии отменяется вместо 204 или 500