У меня есть событие, которое запускает вызов другой службы, которая создаст организацию. Организация возвращается как наблюдаемая. Затем я использую swithMap, чтобы получить идентификатор организации и использовать его для создания пользователя организации. Этот ответ также возвращает наблюдаемую величину. При следующей подписке возвращаемые данные — это не организация, а объект пользователя организации. Я хочу вернуть организацию, поэтому мне как-то нужно получить первую наблюдаемую.
Я пробовал много вещей, и мне удалось заставить это работать со следующими изменениями. Как видите, я просто сопоставляю второй ответ и вместо этого возвращаю данные из первого наблюдаемого. Я чувствую, что должен быть лучший способ.
У меня есть событие, которое запускает вызов другой службы, которая создаст организацию. Организация возвращается как наблюдаемая. Затем я использую swithMap, чтобы получить идентификатор организации и использовать его для создания пользователя организации. Этот ответ также возвращает наблюдаемую величину. При следующей подписке возвращаемые данные — это не организация, а объект пользователя организации. Я хочу вернуть организацию, поэтому мне как-то нужно получить первую наблюдаемую. [code]return new Promise((resolve, reject) => { this.organizationController .send(CREATE_ORGANIZATION, organizationEvent) .pipe( switchMap((org) => { if (org === null) { reject(new UnprocessableEntityException()); }
return this.organizationController.send( CREATE_ORGANIZATION_USER, organizationUserEvent, ); }), ) .subscribe({ next: (data) => { resolve(data); }, error: (e) => { reject(e); }, }); }); [/code] Я пробовал много вещей, и мне удалось заставить это работать со следующими изменениями. Как видите, я просто сопоставляю второй ответ и вместо этого возвращаю данные из первого наблюдаемого. Я чувствую, что должен быть лучший способ. [code]return new Promise((resolve, reject) => { this.organizationController .send(CREATE_ORGANIZATION, organizationEvent) .pipe( mergeMap((org) => { if (org === null) { reject(new UnprocessableEntityException()); }
return this.organizationController .send(CREATE_ORGANIZATION_USER, organizationUserEvent) .pipe( map(() => { return { org: org }; }), ); }), ) .subscribe({ next: ({ org: org }) => { resolve(org); }, error: (e) => { reject(e); }, }); }); < /code> Я также попытался использовать withlatestfrom с приведенным ниже расположением, и это вызвало первый вызов API дважды и не работал. < /p> return new Promise((resolve, reject) => { const $org = this.organizationController.send( CREATE_ORGANIZATION, organizationEvent, );