У меня есть эта функция:
uploadFiles(files: FileToUpload[]) {
return Observable.create(async (observable) => {
const aborters: Aborter[] = [];
for (const fileToUpload of files) {
let uploadResponse: UploadResponse;
const aborter = Aborter.none;
aborters.push(aborter);
try {
uploadResponse = await this.upload(file)
} catch (err) {
}
}
return () => {
console.log('coooo');
this.files$.next([]);
for (const aborter of aborters) {
if (!aborter.aborted) {
aborter.abort();
}
}
};
});
}
Я хочу, чтобы эта наблюдаемая была отменяемой, когда пользователь перемещается без предупреждения из apge, если происходит загрузка, поэтому я возвращаю функцию, которая вызывается при вызовах отказа от подписки.
Затем я подписываюсь так:
this.uploadSubscription = this.uploadService.uploadFiles(this.control.value).subscribe(
() => console.log('progress'),
(e) => {
console.log(`errored with ${e}`);
this.uploadSubscription.unsubscribe();
},
() => {
console.log('completed');
this.uploadSubscription.unsubscribe();
}
);
И у меня есть ngOnDestroy
вот так:
ngOnDestroy() {
if (this.uploadSubscription) {
this.uploadSubscription.unsubscribe();
}
}
Но даже несмотря на то, что вызывается метод отписки,обратный вызов, полученный из Observable.create
, не вызывается.