const searchResults = keyPresses.throttle(250).map(
key => getJSON('searchResults?q='+input.value).retry()
).switchLatest();
searchResults.forEach(
result => updateSearchResults(resultSet),
error => showMessage('the server appears to be down')
)
我在下面有问题或需要澄清的问题
note
-我将使用大括号表示可观察值
1. 每一步的搜索结果如何?
比方说,我按abcdef,节流阀将执行的操作是拾取{c ... f}(基于250ms时序的粗略假设) 然后将这个集合传给地图。 现在map会将每个项目转换为内部函数的结果 内部函数是getJSON(),它会发出XHR请求,并在结果为否的情况下重试3次 现在,两个网络请求都消失了,第一个是abc,第二个是abcdef。我对吗?
但是我在这里有疑问。已经给出了六个keyPress。会不会两次都选择abcdef作为输入值?
因此,根据我的说法,将使用q = abcdef发出两个网络请求
2。好吧,继续,两个N / W请求返回结果,无论成功与否,它都将立即切换到最新的结果 SyntaxError,我的第二个N / W请求返回了错误,由于switchLatest,UI将显示错误。我对吗?
3。说,我们没有油门和六个按键{a..b..cd...ef}
现在,地图将具有六个内部可观测值{{a的结果{{a的结果可观测}} {ab的结果可观测} ...
{可观察到abcdef的结果}}
现在,switchLatest
将从外部物品中选择最后一个(内部物品)并将其输出为{ result of abcdef }
的平面物品
或,一旦节流阀给出了abcdef,switchLatest是否会取消上一个事件(对q = abc或q = abcdef的XHR请求)?
令人困惑的内部工作原理!