angular - Angular/Typescript - 布尔变量未在 .subscribe 上更新
问题描述
我在服务器端有这个功能,暂时被迫返回true:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[HttpGet("cPasaAJefeVentas")]
public async Task<IActionResult> CPasaAJefeVentas(string idPais, string idCompania, string idSalesorg, string idDivision, string idUser, decimal porcentaje)
{
return Ok(true);
}
这是您在服务内的客户端调用它的方式:
cPasaAJefeVentas(idPais: string , idCompania:string, idSalesOrg:string, idDivision:string, idUser:string, porcentaje:number) {
return this.http.get(this.altapedidosserveruri + 'cPasaAJefeVentas?=' + idPais + '&idCompania=' + idCompania + '&idSalesOrg=' + idSalesOrg + '&idDivision=' + idDivision + '&idUser=' + idUser + '&porcentaje=' + porcentaje);
}
这是我现在遇到问题的地方:
cPasaJefeVentas(): boolean {
let descuentoDiscrecional: number = 5;
let res: boolean = null;
this.altaPedidosService
.cPasaAJefeVentas(this.pedidoObjeto.idPais, this.pedidoObjeto.idCompania,
this.pedidoObjeto.idSalesOrg, this.pedidoObjeto.idDivision, this.loggedService.logged.UserName, descuentoDiscrecional)
.subscribe((result: boolean) => (
console.log(result),
res = result
))
return res;
}
console.log(result) 打印 TRUE,这是正确的,但是我想将该返回值分配给“res”变量,但它不起作用,因为它在退出 .susbscribe 时仍然为空。
我想知道我在这里做错了什么?为什么“res”变量的值没有像它应该的那样更新?
解决方案
您的服务正在返回一个Observable响应。Observables 是异步的,您无法保证何时会收到响应。因此,修改您的方法以返回Observable响应。你的代码会被这样修改
cPasaJefeVentas(): Observable<boolean> {
let descuentoDiscrecional: number = 5;
let res: boolean = null;
let response$ = this.altaPedidosService
.cPasaAJefeVentas(this.pedidoObjeto.idPais, this.pedidoObjeto.idCompania,
this.pedidoObjeto.idSalesOrg, this.pedidoObjeto.idDivision, this.loggedService.logged.UserName, descuentoDiscrecional)
.subscribe((result: boolean) => (
console.log(result),
res = result
));
return response$;
}
在模板中,您可以应用异步管道来显示可观察值,例如
<p>{{cPasaJefeVentas() | async}}</p>
推荐阅读
- angular - ng-content 里面的组件被实例化了两次
- r - R如果另一个变量为TRUE,则从数据框中替换变量
- javascript - 根据另一个可观察的条件返回可观察的
- facebook - 无法添加 user_photo 权限
- java - 如何将“截断”模型发送到百里香?
- android - 将firebase_messaging插件添加到android上的flutter项目会阻止应用程序启动而没有错误
- laravel-5 - Where Not In 使用查询生成器
- c# - 在 c# 中,为什么此代码作为引用工作?我打算按价值使用
- android - 保持运行独特的工作,而不是开始新的工作
- xamarin - 如何解决 xamarin 中的网格和框错误