函数是否以正确的方式从Observable获取值并同步返回?
getAllTags = (): Array<TagModel> =>{
var to_ret = new Array<TagModel>();
this.ngrxStateList.take(1).subscribe(x=>to_ret = x );
return to_ret;
}
或者我应该将值作为承诺返回吗?
注意: observable基本上是ngrx状态的列表。
答案 0 :(得分:0)
函数是否以正确的方式从Observable获取值并同步返回?
尝试从异步事件中同步返回值绝不是一个好主意。无论是Promise还是Observable。
或者我应该将值作为承诺返回吗?
你已经有了一个Observable,为什么你会回复一个Promise?只需将其保存为Observable:)
我认为您的工作流程应该是:
- 提供服务,您可以通过HTTP检索列表
- 等待动作FETCH_LIST,然后调用你的服务,一旦它有结果调度动作FETCH_LIST_SUCCESS,列表作为有效负载,然后你的减速器将列表添加到商店
- 在您的组件中,只需拥有以下内容:
@Component({...})
export class YourComponent {
public tags$: TagModel[] = this
.store
.select(state => state.select.the.good.slice.of.state);
constructor (private store: Store<YourStoreType>) {}
}
并在HTML视图中:
<div *ngIf="tags$ | async as tags; else #noTags">
Your list has {{ tags.length }} tag{{ tags.length > 1 ? 's': '' }}
List:
<div *ngFor="let tag of tags">
{{ tag.theTagPropertyYouWantToDisplay }}
</div>
</div>
<div #noTags>
No tags available yet!
</div>
完全反应的示例:)现在每次要刷新列表时,只需调度另一个FETCH_LIST
操作,该操作将被效果捕获,这将获取标记,更新商店并感谢可观察的+ Angular,您的列表将在视图中自动更新。