RxJS的开关功能

RxJS the switch function

本文关键字:功能 开关 RxJS      更新时间:2023-09-26

有人能解释一下RxJS中的开关函数是怎么做的吗?
我读了文档,但无法配置出来,它是如何工作的

如果你有一个由可观察值组成的可观察流,switch会将这个嵌套的可观察对象平铺成一个由可观察值组成的流。它将为你提供外部流最近生成的内部流的值。

使用示例可能更容易。假设您有一个文本框,用于控制从AJAX查询接收到的数据。我们把这个文本框称为页码。您的目标是显示用户在文本框中键入的页面的AJAX查询结果。您可以使用switch来构建该数据的可观察流:

function getPageData(pageNumber) {
   // return the ajax query for this page
   return $.ajax("/url?page=" + pageNumber));
}
var pageNumberValue = // some observable of the page number values coming from the text box
// this will be an observable of observables of the page data
var dataStreamOfStreams = pageNumberValue
    .map(pageNumber => getPageData(pageNumber);
// everytime you change pages, this will "switch" to the new ajax call
// and return the results from that new call.
var dataStream = dataStreamOfStreams.switch();