在angular4中返回模拟http响应而不是服务器调用

时间:2018-05-18 02:56:00

标签: angular http rxjs observable angular5

我订阅了一个函数myFunc()

如果使用X调用它,那么我希望它是来自服务器的正常HTTP响应。

如果没有X调用它,我希望它返回一个带有空数组的'假'http响应。

我该怎么做?我试过返回一个空的observable,但是subscribe永远不会触发。

myFunc(x) {
  if (x) {
    return this.http.get('myURL');
  } else {
    return Observable.from<Response>([])
  }
}

3 个答案:

答案 0 :(得分:1)

只需将Observable.from<Response>([])替换为Observable.of<Response>([])

return Observable.of<Response>([])

这是因为Observable.from迭代输入数组并发出其所有项目。由于数组为空,因此不会发出任何内容。 Observable.of只需将您传递的内容作为参数传递,然后将其作为next发送,然后发送complete通知。

答案 1 :(得分:0)

您可以返回这样的内容,它会触发您的订阅:

return Observable.of<any>({ isSuccess: false });

在这里你可以传递任何对象。我刚刚创建了简单对象{ isSuccess: false }

答案 2 :(得分:0)

Observable.empty不会触发订阅的onNext函数,但会触发onComplete。你可以把一些逻辑放在那里。或者,您可以使用

return Observable.just(null);

返回带有空数据的Observable