当值不存在时重试 API 调用
Retry API call when value is not there
有没有办法连续轮询我的 API 直到检索到一个值(但在失败时停止)?现在,它发出呼叫,但由于当时没有任何东西,它不会重试。我希望重试继续,除非调用失败。
组件
ngOnInit(): void {
this.getCurrentUser(this.uid);
}
getCurrentUser(uid: string) {
this.userService.getUser(uid).then((user: IUser[]) => {
if (user && user.length > 0) {
this.user = user[0];
}
});
}
服务
getUser(uid: string): Promise<Object | IUser[]> {
return this.firebaseService.generateToken().then((token: string) => {
return this.httpClient
.get(`${environment.apiBasePath}/users/${uid}`, {
headers: { authorization: `Bearer ${token}` },
})
.toPromise();
});
}
如果没有返回数据,则从自身内部再次调用该函数。
getCurrentUser(uid: string) {
this.userService.getUser(uid)
.then((user: IUser[]) => {
if (user && user.length > 0) {
this.user = user[0];
} else {
this.getCurrentUser(this.uid)
}
})
.catch(error = console.error(error);
}
或许可以限制您希望这种情况发生的次数?或者设置在召回时使用 setTimeout
(在 else 子句中),这样它就不会发生得太快?
有没有办法连续轮询我的 API 直到检索到一个值(但在失败时停止)?现在,它发出呼叫,但由于当时没有任何东西,它不会重试。我希望重试继续,除非调用失败。
组件
ngOnInit(): void {
this.getCurrentUser(this.uid);
}
getCurrentUser(uid: string) {
this.userService.getUser(uid).then((user: IUser[]) => {
if (user && user.length > 0) {
this.user = user[0];
}
});
}
服务
getUser(uid: string): Promise<Object | IUser[]> {
return this.firebaseService.generateToken().then((token: string) => {
return this.httpClient
.get(`${environment.apiBasePath}/users/${uid}`, {
headers: { authorization: `Bearer ${token}` },
})
.toPromise();
});
}
如果没有返回数据,则从自身内部再次调用该函数。
getCurrentUser(uid: string) {
this.userService.getUser(uid)
.then((user: IUser[]) => {
if (user && user.length > 0) {
this.user = user[0];
} else {
this.getCurrentUser(this.uid)
}
})
.catch(error = console.error(error);
}
或许可以限制您希望这种情况发生的次数?或者设置在召回时使用 setTimeout
(在 else 子句中),这样它就不会发生得太快?