将 Observable 和 Promise 合并到一个对象
Merging an Observable and Promise to an Object
如何从 Observables 中合并两个函数 returns(一个 returns 承诺,一个 returns 对象)?
我如何链接结果?执行此操作的正确方法是什么?
functionReturnObservable(
element: SomeInterface,
): Observable<Interface> {
return this.someService.fn2ReturnObservable().pipe(
map((result) => {
// the promise function needs to merge with the funcObject
const updatedElement= from(this.fnPromise(element))
return this.funObject(updatedElement, result);
}),
);
}
funcObject(
updatedElement: Readonly<Interface>,
listItems: IInterface[],
): IObject {
// returns a revised Object
return updatedObjects;
}
async fnPromise(elements: IElements): Promise<SomeInterface> {
// ... some other stuff
let result;
result.Name = "John"
if( elements.References) {
await this.otherService
.lookup(elements.References)
.then((result) => {
result.Secret= result;
});
}
return result;
}
使用高阶可观察对象:
functionReturnObservable(
element: SomeInterface,
): Observable<Interface> {
return this.someService.fn2ReturnObservable().pipe(
switchMap((result) => {
// switchMap will subscribe to inner observable, use map to combine results
return from(this.fnPromise(element)).pipe(
map(updatedElement => this.funObject(updatedElement, result)));
}),
);
}
尝试使用 async / await 时可能会出现一些问题,它与 observables 不能很好地结合。如果它仍然坏了,删除 async / await 的东西,只是 return 承诺。
如何从 Observables 中合并两个函数 returns(一个 returns 承诺,一个 returns 对象)? 我如何链接结果?执行此操作的正确方法是什么?
functionReturnObservable(
element: SomeInterface,
): Observable<Interface> {
return this.someService.fn2ReturnObservable().pipe(
map((result) => {
// the promise function needs to merge with the funcObject
const updatedElement= from(this.fnPromise(element))
return this.funObject(updatedElement, result);
}),
);
}
funcObject(
updatedElement: Readonly<Interface>,
listItems: IInterface[],
): IObject {
// returns a revised Object
return updatedObjects;
}
async fnPromise(elements: IElements): Promise<SomeInterface> {
// ... some other stuff
let result;
result.Name = "John"
if( elements.References) {
await this.otherService
.lookup(elements.References)
.then((result) => {
result.Secret= result;
});
}
return result;
}
使用高阶可观察对象:
functionReturnObservable(
element: SomeInterface,
): Observable<Interface> {
return this.someService.fn2ReturnObservable().pipe(
switchMap((result) => {
// switchMap will subscribe to inner observable, use map to combine results
return from(this.fnPromise(element)).pipe(
map(updatedElement => this.funObject(updatedElement, result)));
}),
);
}
尝试使用 async / await 时可能会出现一些问题,它与 observables 不能很好地结合。如果它仍然坏了,删除 async / await 的东西,只是 return 承诺。