是否有可能在运算符内部返回新的可观察项,嵌套可观察项

is it possible to return new observable inside operator, nested observable

本文关键字:观察 嵌套 有可能 运算符 内部 返回 是否      更新时间:2023-09-26

var url = "http://domain.com/some/url";
// this endpoint will return websocket URL
Rx.DOM.ajax({
  url: url,
  method: 'GET',
  responseType: 'json'
}).scan(function(o, data) {
  // data.websocker is websocker url
  return Rx.DOM.fromWebSocket(data.websocket_url, null, function(o) {
    console.log(o);
  }, function(o) {
    console.log(o);
  });
}).subscribe(function(data) {
  // Success Message
  console.log(data);
}, function(error) {
  // Log the error
  console.log(error);
});

如上面的例子所示。有可能像承诺一样从运营商内部发送Observable吗?

当然,这是非常常见的,并且存在许多运算符以各种方式处理内部可观测值。在本例中,可以使用flatMap而不是scan:

var url = "http://domain.com/some/url";
// this endpoint will return websocket URL
Rx.DOM.ajax({
  url: url,
  method: 'GET',
  responseType: 'json'
}).flatMap(function (data) {
  // data.websocker is websocker url
  return Rx.DOM.fromWebSocket(data.websocket_url, null, function(o) {
    console.log(o);
  }, function(o) {
    console.log(o);
  });
}).subscribe(function(data) {
  // will receive messages that are received from the websocket
  console.log(data);
}, function(error) {
  // Log the error
  console.log(error);
});