Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 将承诺转化为ngrx效应中的可观察承诺_Angular_Redux_Promise_Ngrx - Fatal编程技术网

Angular 将承诺转化为ngrx效应中的可观察承诺

Angular 将承诺转化为ngrx效应中的可观察承诺,angular,redux,promise,ngrx,Angular,Redux,Promise,Ngrx,我使用的是第三方库,它给出了承诺,但我需要将其包装成ngrx效果中可以观察到的。 其思想是在应用程序成功初始化时发送新操作。 但我需要在承诺解决后发送数据 classOne.promise().then(result => nested.OnemorePromise(result).then(result2 => //(result2) dispatch new action here (result2) ) ); 我创造了这样的东西: @Effect() ini

我使用的是第三方库,它给出了承诺,但我需要将其包装成ngrx效果中可以观察到的。 其思想是在应用程序成功初始化时发送新操作。 但我需要在承诺解决后发送数据

classOne.promise().then(result =>
  nested.OnemorePromise(result).then(result2 =>
    //(result2) dispatch new action here (result2)
  )
);
我创造了这样的东西:

@Effect()
initializeValue$:Observable=此.actions$.pipe(
ofAction(应用初始化操作),
映射(操作=>{
classOne.promise().then(结果=>
nested.OnemorePromise(result).then(result2=>
this.store.dispatch(新操作(result2))
//理想情况下,仅返回新操作(结果2)
)
);

})
这里的问题是,您没有返回
操作
,而是手动调用
store.dispatch
(就像您的评论所说的那样)

要解决此问题,请使用(promise)中的
而不是
.promise()。然后(…)


还要确保
map
函数返回某些内容,但现在不是这样。

您可以在Rxjs>=6中使用
from

import { from } from 'rxjs';

map(action => {
  from(classOne.promise()).map(result ...
import { fromPromise } from 'rxjs/observable/fromPromise';

map(action => {
  fromPromise(classOne.promise()).map(result ...

fromPromise
Rxjs中,我尝试返回。结果相同。好的,谢谢。如果您使用Rxjs 6,运算符是可出租的,这意味着您应该从(classOne.promise()).pipe(结果