Связывание RXJ обещает Observable.from - PullRequest
0 голосов
/ 23 апреля 2019

В RxJS 6, как я могу связать и передать данные с обещаниями?Я должен сделать кучу вызовов API JIRA подряд с помощью библиотеки npm jira -nector.Но я не уверен, как выполнить и передать данные в функции.

Спасибо!

Пример:

    const pipeData = Observable.from(jira.search.search({
        jql: 'team = 41 and type = "Initiative"'
    }))

    pipeData.pipe(
        data => operators.flatMap(data.issues),
        issue => Observable.from(jira.search.search({
        jql: `team = 41 and "Parent Link" = ${issue.key}`
    }))).subscribe(results => {
        console.log(results)
    })

1 Ответ

1 голос
/ 23 апреля 2019

Во-первых, вы должны использовать операторы lettable в функции pipe.

То, что вы пытаетесь сделать, это:

  1. Сделайте один вызов и получите множество проблем;
  2. Сделайте отдельный звонок для каждого вопроса;
  3. Получить результаты

Так что-то вроде:

pipeData.pipe(

    // when pipeData emits, subscribe to the following and cancel the previous subscription if there was one:
    switchMap(data => of(data.issues))),

    // now you get array of issues, so concatAll and get a stream of it:
    concatAll(),

    // now to call another HTTP call for every emit, use concatMap:
    concatMap(issue => jira.search.search({
    jql: `team = 41 and "Parent Link" = ${issue.key}`
})).subscribe(results => {
    console.log(results)
})

Обратите внимание, что я не обернул jira.search.search с from, так как вы также можете передавать обещания в concatMap, и вы также можете передать второй параметр - resultSelector , чтобы выбрать только некоторые из свойства, если необходимо:

concatMap(issue => jira.search.search({
        jql: `team = 41 and "Parent Link" = ${issue.key}`),
        result => result.prop1
)
...