Javascript 如何取消正在进行的http调用解析或拒绝angular component的onDestroy

Javascript 如何取消正在进行的http调用解析或拒绝angular component的onDestroy,javascript,angular,http,es6-promise,Javascript,Angular,Http,Es6 Promise,我有一个函数,可以在单击提交按钮时执行HTTP post。根据响应,我将显示一个模式,说明请求是否成功 现在,当用户单击Submit按钮并立即单击将加载不同组件的导航图标时,问题就出现了。现在加载了另一个页面,但仍然处理HTTP请求并调用resolve/reject,显示模式背景淡入淡出,使整个屏幕变灰,不允许用户执行任何其他操作。唯一的出路是刷新屏幕 有没有办法停止执行组件的resolve/reject onDestroy 我用这个 export class Component impleme

我有一个函数,可以在单击提交按钮时执行HTTP post。根据响应,我将显示一个模式,说明请求是否成功

现在,当用户单击Submit按钮并立即单击将加载不同组件的导航图标时,问题就出现了。现在加载了另一个页面,但仍然处理HTTP请求并调用resolve/reject,显示模式背景淡入淡出,使整个屏幕变灰,不允许用户执行任何其他操作。唯一的出路是刷新屏幕

有没有办法停止执行组件的resolve/reject onDestroy

我用这个

export class Component implements OnInit, OnDestroy {
    alive = true;
    constructor(
        private route: ActivatedRoute,
        private router: Router
    ) { }

    ngOnInit() {
        this.route.queryParamMap //example observable
            .pipe(
                takeWhile(() => this.alive)
            )
            .subscribe(params => {

            });
    }

    ngOnDestroy(): void {
        this.alive = false;
    }
}

此外,您还可以在重定向按钮中(如果您实现了背景,我想重定向在您模式中)将背景设置为false。

这是否回答了您的问题?使用RxJS中的可观察项&使用unsubscribe方法。这将对您有所帮助。使用takeuntill和Unsubscribe Checkout这个链接,会很有帮助:take(1)或takeuntill没有帮助。请求已启动,但上述操作不会停止该请求。takeWhile和Unsubscribe都有效。使用TakeUntil和Take(1)进行打击。谢谢