有没有办法解决这个 rxjs observable 的内在承诺?

Is there a way to resolve the inner promise of this rxjs observable?

(concat(ready$,processPlugins$) as Observable<{
        plugged: PluggedModule;
        cmdPluginsRes: {
            execute: Awaitable<Result<void, void>>;
            type: PluginType.Command;
            name: string;
            description: string;
        }[];
    }>)


(concat(ready$,processPlugins$) as Observable<{
        plugged: PluggedModule;
        cmdPluginsRes: {
            execute: Result<void, void>;
            type: PluginType.Command;
            name: string;
            description: string;
        }[];
    }>)

^^ 上面的代码片段就是我想要的。我只想在 cmdPluginRes 中解析 execute 所以当我订阅可观察对象时,处理数据会更容易。

我有这个 rxjs observable。在 cmdPluginRes(一个数组)中,我有一个 promiseLike 属性 执行。我怎么能把这个内在的承诺变成它的解析类型 Result ? 结果类型来自vultix ts-results.

你可以这样做:

concat(ready$, processPlugins$).pipe(
    switchMap(obj => from(obj.cmdPluginRes.execute).pipe(
        map(executeResult => ({...obj, execute: executeResult })
    ))
);

在这里,我们将排放通过管道传输到 switchMap

switchMap 接收排放并将其转换为“内部可观察”的排放,在本例中是您的“执行”承诺。

我们使用 from 将 promise 转换为可观察的,然后我们可以 map 将其 execute 属性 替换为原始对象的副本结果。