请求重复,多次请求会广播err导致接收到null值

This commit is contained in:
小海
2020-04-25 17:09:25 +08:00
parent d4f5b3536f
commit 94e2c27f8b

View File

@@ -14,6 +14,8 @@ export class UserService {
private localStorageService: LocalStorageService) { private localStorageService: LocalStorageService) {
} }
private lastRequestTime: number;
// 存储订阅者 // 存储订阅者
private userObserverArray: Observer<Response<User>>[] = []; private userObserverArray: Observer<Response<User>>[] = [];
@@ -29,8 +31,16 @@ export class UserService {
} }
} }
} }
if (this.lastRequestTime && Date.now() - this.lastRequestTime < 1000) {
return {
unsubscribe() {
observer.complete();
}
}
}
// 不符合 请求网络数据并更新缓存 // 不符合 请求网络数据并更新缓存
// 向订阅者传数据 // 向订阅者传数据
this.lastRequestTime = Date.now();
const subscription = this.apiService.userInfo().subscribe({ const subscription = this.apiService.userInfo().subscribe({
next: o => { next: o => {
this.localStorageService.setUser(o.result); this.localStorageService.setUser(o.result);
@@ -38,6 +48,10 @@ export class UserService {
}, },
error: err => { error: err => {
// console.debug('登录过期 token错误 等等'); // console.debug('登录过期 token错误 等等');
if (err.code === -1) {
// 请求重复
return
}
this.localStorageService.removeToken(); this.localStorageService.removeToken();
observer.next(new Response<User>(null)); observer.next(new Response<User>(null));
observer.error(err); observer.error(err);