Понимание потока газа в Rxjs | Карта | SwitchПоследний в поле поиска - PullRequest
0 голосов
/ 03 мая 2019
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. Как выглядит searchResults на каждом шаге?

Допустим, я нажимаю abcdef, что будет делать дроссель, это взять {c ... f} (грубое предположение, основанное на времени 250 мс) затем он передает эту коллекцию на карту. Теперь карта преобразует каждый элемент в результат внутренней функции Внутренняя функция - getJSON (), которая делает XHR-запрос и, возможно, повторяет попытку 3 раза в случае отрицательного результата. Теперь два сетевых запроса вышли: сначала для abc, а затем для abcdef. Я прав?

  • Но у меня есть вопрос прямо здесь. Дав шесть клавиш уже. Разве он не выберет abcdef в качестве входного значения оба раза?

  • Так что, по моему мнению, два сетевых запроса будут сделаны с q = abcdef

2.Хорошо, двигаясь дальше, два запроса N / W возвращают результаты, он просто переключается на результат последних, независимо от успеха или неудачи. SyntaxError, мой второй запрос N / W возвратил ошибку, пользовательский интерфейс отобразит ошибку из-за switchLatest. Я прав?

3. Скажите, у нас нет дросселя и шести клавиш {a..b..cd...ef} Теперь карта будет иметь шесть внутренних наблюдаемых {{результат a} {наблюдаемый с результатом ab} {наблюдаемый с результатом abc} ... {наблюдаемый с результатом abcdef}}

Теперь switchLatest выберет последний элемент (наблюдаемый внутри) из внешнего и выведет его в виде плоской наблюдаемой величины { result of abcdef }

ИЛИ действительно ли switchLatest отменяет предыдущее событие (запрос XHR для q = abc или q = abcdef), как только abcdef дается дросселем?

Это сбивает с толку, как работают внутренние органы!

...