this.http.post
- это асинхронное действие, поэтому вы возвращаете of(bool)
до того, как bool
будет определено результатом.Перефразируя, of(bool)
разрешается до того, как POST завершается, и устанавливает значение bool
.
Вместо этого вы можете map
ответ, наблюдаемый для логического значения, и возвращать его напрямую.Измените свой if
блок на:
if (token != null) {
return this.http.post('http://localhost:5000/v1/logstatus?token=' + token, this.authData)
.map(res => !JSON.stringify(res).includes('AuthorizationNotFound'));
}
Это сделает наблюдаемую карту POST напрямую с логическим значением, которое вы ищете.
Не связано, но если вы еще этого не сделали, вам следуетрассмотрите возможность добавления логики обработки ошибок к этому вызову, потому что если вызов POST завершится неудачно, ваша защита сломается.