有人可以解释一下RxJS中的开关功能吗?
我读了documentation但无法配置它,它是如何工作的.
最佳答案
如果您有可观察的可观察值流,则switch会将嵌套的observable展平为单个可观察值流.它将为您提供外部流生成的最新内部流的值.
举个例子可能更容易.假设您有一个文本框,用于控制从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();
我希望这有帮助.