有没有办法解决这个 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
属性 替换为原始对象的副本结果。
(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
你可以这样做:
concat(ready$, processPlugins$).pipe(
switchMap(obj => from(obj.cmdPluginRes.execute).pipe(
map(executeResult => ({...obj, execute: executeResult })
))
);
在这里,我们将排放通过管道传输到 switchMap
。
switchMap
接收排放并将其转换为“内部可观察”的排放,在本例中是您的“执行”承诺。
我们使用 from
将 promise 转换为可观察的,然后我们可以 map
将其 execute
属性 替换为原始对象的副本结果。