У меня есть одна функция в моем приложении getServerData()
, которую я вызываю с домашней страницы и передаю Token в качестве параметра в моем вызове API в этой функции.
, если Token является действительным API, вернет данные, в противном случае он вернетнеавторизованный доступ с ошибкой истекшего токена в то время я вызываю ту же функцию с новым сгенерированным токеном из другого API, но кое-как рекурсивный вызов функции не работает в Observable
.
Проверьте код ниже для более подробной информации:
/**
* Get Search result from server.
*/
getServerData(searchText: string): Observable<any> {
let self = this;
return Observable.create(function(observer) {
self.getToken().then((token) => {
console.log('Token : ', token);
self.httpPlugin.get(self.url + searchText, {}, {}).then((response) => {
console.log("Response Success : " + JSON.stringify(response));
observer.next(jsonResponse);
}).catch(error => {
if (error.status == 403) {
//Call Same method Again
self.getServerData(searchText);
} else {
console.log("Error : " + error);
console.log("Error " + JSON.stringify(error));
observer.error(error);
}
});
}).catch((error) => {
observer.error(error);
console.log("Error : " + error);
})
});
}
При вызове той же функции выполнение кода не выполняется.
Редактирование на основе комментария:
Я подписан, как показано ниже:
this.subscription = this.api.getServerData(this.searchString.toUpperCase()).subscribe((response: any) => {
console.log("back with data :-",response);
}, error => {
console.log("InLine Error : ",error);
});
Невозможнопонять, что происходит неправильно, или я делаю какую-то ошибку в вызове функции из Observable()
.
Укажите мне это.
Заранее спасибо!