0

我有一个扩展角Http类的类,我们称之为MyHttp。我也有MyJwtHttp扩展类的MyHttp类。

我希望能够将响应作为 json 返回,问题是如果我正在做这样的事情:

myJwtHttp.request(..).map(res=>res.json()

request方法的实现是:

class MyHttp extends Http {
    request(url,...){
        ..
         ..
    return super.request(url).subscribe(res=> doSomething(res))
    }
}

这里的问题是该map函数在类的订阅者之前被调用MyHttp。这会导致doSomething(res)json 的输入而不是响应本身。

我尝试过使用last而不是,map但它不会将json返回给请求的调用者。

知道如何解决这个问题吗?

4

1 回答 1

0

如果你想在你的MyHttp类中对请求做一些事情,我会使用do操作符而不是订阅相应的 observable:

class MyHttp extends Http {
  request(url,...) {
    (...)
    return super.request(url).do(res=> doSomething(res));
  }
}

在您的情况下,该request方法不会返回一个可观察的,而是一个与该subscribe方法的调用相对应的订阅对象。

从 rxjs 文档:

为可观察序列中的每个元素调用一个动作,并在可观察序列正常或异常终止时调用一个动作。

该方法可以通过拦截消息流来对管道上的消息运行任意操作,从而对查询行为进行调试、记录等。

关于执行顺序,我并不完全了解 的实现,MyJwtHttp但是如果在and类map之外使用该运算符,则其关联的回调应该接收一个响应对象而不是 JSON 内容。MyHttpMyJwtHttp

于 2016-03-23T22:17:34.293 回答