如何解决Angular Promise尚未解决
我的班级中有一个subscribe
函数,该函数订阅复选框切换的状态:
public subscribe(): void{
...
// Subscribe to toggle subject state
this.subscription = this.isSet$
.pipe(
// Skip initial toggle state
skip(1),// Update persisted FCM enabled state
tap(isSet => {
localStorage.setItem(PushService.localStorageKey,String(isSet));
}),// Switch between function calls based on the toggle state
switchMap(isSet => (isSet ?
this.requestToken()
.then(() => {
console.log('RESOLVED REQUEST');
this.cbdisabled = false;
}) :
this.deletetoken()
.then(() => {
console.log('RESOLVED DELETE');
this.cbdisabled = false;
}))))
.subscribe();
}
switchMap
中的两个承诺如下:
请求
private requestToken(): Promise<any> {
console.log('REQUEST TOKEN FROM FIREBASE');
return this.afMessaging.requestToken.pipe(
mergeMap(devicetoken =>
this.http.post<void>(
formatEndpointUrl(environment.endpoints.communicationservice.web_push.register_device),{devicetoken}
)
)
).toPromise();
}
private deletetoken(): Promise<void> {
console.log('DELETE TOKEN CALLED');
return this.afMessaging.getToken.pipe(
tap((devicetoken) => {
this.afMessaging.deletetoken(devicetoken);
console.log('DELETING TOKEN IN FIREBASE');
}),mergeMap(devicetoken =>
this.http.delete<void>(
formatEndpointUrl(environment.endpoints.communicationservice.web_push.delete_device,{devicetoken})
).toPromise().then(() => {
console.log('DELETING TOKEN IN BACKEND');
})
)).toPromise();
}
当我将“开关”切换到“关闭”时,它将删除令牌,日志如下所示:
DELETE TOKEN CALLED
DELETING TOKEN IN FIREBASE
DELETING TOKEN IN BACKEND
RESOLVED DELETE
但是,当我将“开关”切换到“开”时,我得到了:
REQUEST TOKEN FROM FIREBASE
就是这样,Promise永远不会得到解决。我想念什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。