我有一个需要很长时间才能响应的后端api调用。大约10分钟。但是,它确实通过signalr发布了进度更新。将信号器位置于一侧,我需要一种方法来制作一个http帖子但不等待响应。火与忘记。 为了扩展这个,我在ngrx效果中调用api。一旦打电话,我想开始我的减速器将处理的不同动作 是否有可以执行此操作的rxjs操作?
答案 0 :(得分:0)
您{HTTP}调用subscribe
来触发它们,并在调用完成后使用回调来执行某些操作。
但你可以简单地在一个函数中调用,而不是等待你的HTTP调用结束:
doSmthSync() {
this.myService.myCall(...myArgs).subscribe(response => {/* Do smth async */});
// Do something here that will be made without waiting for the end pf the call
}
答案 1 :(得分:0)
这取决于。
即使http连接被切断,您的服务器是否仍继续工作?在这种情况下,您可以从客户端abort(假设您使用的HTTP库支持此功能)。如果它主要快速完成但有时需要10分钟,您还可以在Rx流上使用.timeout()
来停止收听它。
另一种解决方案是在不等待答案的情况下解析http调用。这可以使用.toPromise()
而不是awaiting
或.subscribe()
而不使用任何处理程序来完成。但是这些资源将被分配并在后台继续运行,而无需对这些资源做任何事情。