Угловые 5 вложенных возвратов - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь создать функцию, которая должна возвращать логическое значение после вызова моего API

, поэтому я создал следующую функцию:

verify() {
    console.log('lol');
    let user = JSON.parse(localStorage.getItem('currentUser')) as User;
    return this.http.get(environment.apiUrl + 'Users/' + user.id,
        {params: ApiHelperService.prototype.createParams([], true)}).subscribe(
        result => {
            return true;
        },
        error => {
            return false;
        }
    );

}

И затем я вызвал ее:

if (this._userService.verify()) {
    return true;
}
else {
    this._router.navigate(['/login'], {queryParams: {returnUrl: state.url}});
    return false;
}

Однако, к сожалению, функция возвращается до ответа от сервера.

Поэтому мой вопрос заключается в том, как мне создать эти вложенные операторы return, чтобы убедиться, что она возвращает правильное значение?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

предлагают использовать асинхронный / ожидающий способ, как показано ниже

async verify() {
    console.log('lol');
    let user = JSON.parse(localStorage.getItem('currentUser')) as User;
    return await this.http.get(environment.apiUrl + 'Users/' + user.id,
        {params: ApiHelperService.prototype.createParams([], true)})
    ).toPromise();
}

использовать его следующим образом

async verifyoutput()
{
    try
    {
      const verify = await verify();
      return true;
    }
    catch (e)
    {
      return false;
    }
}
0 голосов
/ 23 мая 2018
verify():Observable<any> {
    console.log('lol');
    let user = JSON.parse(localStorage.getItem('currentUser')) as User;
    return this.http.get(environment.apiUrl + 'Users/' + user.id,
    {params: ApiHelperService.prototype.createParams([], true)})
}

...

verify().subscribe(result => {
    return true
},err => {
    this._router.navigate(['/login'], {queryParams: {returnUrl: state.url}});
    return false;
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...