Как вернуть первый предмет в стиме?Javascript

Форум по Javascript
Ответить
Anonymous
 Как вернуть первый предмет в стиме?

Сообщение Anonymous »

У меня есть событие, которое запускает вызов другой службы, которая создаст организацию. Организация возвращается как наблюдаемая. Затем я использую swithMap, чтобы получить идентификатор организации и использовать его для создания пользователя организации. Этот ответ также возвращает наблюдаемую величину. При следующей подписке возвращаемые данные — это не организация, а объект пользователя организации. Я хочу вернуть организацию, поэтому мне как-то нужно получить первую наблюдаемую.

Код: Выделить всё

return new Promise((resolve, reject) => {
this.organizationController
.send(CREATE_ORGANIZATION, organizationEvent)
.pipe(
switchMap((org) => {
if (org === null) {
reject(new UnprocessableEntityException());
}

const organizationUserEvent: OrganizationUserEventDto = {
dto: {
userId: user.id,
organizationId: org.id,
role: Role.SUPER,
},
};

return this.organizationController.send(
CREATE_ORGANIZATION_USER,
organizationUserEvent,
);
}),
)
.subscribe({
next: (data) => {
resolve(data);
},
error: (e) => {
reject(e);
},
});
});
Я пробовал много вещей, и мне удалось заставить это работать со следующими изменениями. Как видите, я просто сопоставляю второй ответ и вместо этого возвращаю данные из первого наблюдаемого. Я чувствую, что должен быть лучший способ.

Код: Выделить всё

return new Promise((resolve, reject) => {
this.organizationController
.send(CREATE_ORGANIZATION, organizationEvent)
.pipe(
mergeMap((org) => {
if (org === null) {
reject(new UnprocessableEntityException());
}

const organizationUserEvent: OrganizationUserEventDto = {
dto: {
userId: user.id,
organizationId: org.id,
role: Role.SUPER,
},
};

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,
);

$org
.pipe(
mergeMap((org) =>
this.organizationController.send(CREATE_ORGANIZATION_USER, {
userId: user.id,
organizationId: org.id,
role: Role.SUPER,
}),
),
withLatestFrom($org),
)
.subscribe({
next: ([data, org]) => {
resolve(data);
},
error: (e) => {
reject(e);
},
});
});
Я ценю любой вклад. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/793 ... in-a-steam
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»