Объединение результатов внешнего и внутреннего наблюдаемого в один параметр (массив) для следующего метода карты - PullRequest
0 голосов
/ 07 декабря 2018

То, что я пытаюсь сделать, похоже на объединение последних, но второе (внутреннее) наблюдаемое зависит от ответа первого

ajax.get('/first-url')
  .map(res => new Thing(res.response)
  .someMap(thing => 
    ajax.get(`/second-url?code=${thing.code}`)
      .map(res => new OtherThing(res.response))
  ).map(([firstThing, secondThing]) => console.log(firstThing, secondThing))

По сути, я хотел бы иметь возможность объединитьдва результата в один массив тех результатов, которые я могу использовать для выполнения третьей задачи.

Моя цель - получить данные A и данные B, потому что они нужны мне ОБА для выполнения определенного действия и получения данных Bполагается на наличие данных A.

1 Ответ

0 голосов
/ 07 декабря 2018

Я смог получить эту работу, выполнив следующее:

ajax.get('/first-url')
  .map(res => new Thing(res.response)
  .mergeMap(firstThing=> 
    ajax.get(`/second-url?code=${firstThing.code}`)
      .map(res => new OtherThing(res.response))
      .map(secondThing => [firstThing, secondThing])
  ).map(([firstThing, secondThing]) => console.log(firstThing, secondThing))

По существу, в ответе от второй наблюдаемой верните точный массив, который я хочу использовать во внешней наблюдаемой .map

Похоже, это желаемый способ работы rxjs.В версии 5.x для rxjs была вещь, называемая Result Selector, которую можно было передать в качестве второго параметра для создания чего-то подобного (это было бы очень похоже на последний внутренний .map), но это, похоже, имеетустарел для rxjs v6.0:

https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md#howto-result-selector-migration

...