我有一个服务,其中有一个名为foo的方法。在该方法内部,我订阅了一个可观察对象(http-client)。
foo () : boolean
{
let ret : false;
this.http.get ("/blabla").subscribe (
(resp) =>
{
ret = true;
}
return ret;
);
我希望从foo函数中返回一个布尔值,其取决于get方法的结果。但是由于http.get是异步的,所以这并不起作用 - return在http.get完成之前就被调用了。
我该如何使它同步?
编辑
在这里,返回observable而不是布尔值不是一个选项。因为我在foo中处理get的响应(此处未显示),但我还需要根据其返回情况在foo之外进行操作。
EDIT2
我使用pipe和tap扩展了我的示例。现在我将http.get可观察对象返回给服务之外,并通过tap处理http.get结果。
foo () : Observable <any>
{
return this.http.get ("/blabla").pipe (tap (x => handlehere ()));
}
在我看来,它只有一个缺点,就是解析get-result的复杂性要在 foo 内部和外部同时处理。我更希望在 foo 外部使用一个简单的布尔值。