我有一个称为Task的模型类。在其中,我通过创建一个返回可观察到的函数的函数来获取运行时间。
public getRunningTime():可观察 {
const runningTimeObservable =新的Observable (observer => {
setInterval(()=> {
如果(this.isActive){
const currentTime = new Date()。getTime();
viewer.next(currentTime-this.startTime);
}
viewer.next(this.endTime-this.startTime);
},5000);
});
返回runningTimeObservable;
}
我将此Task模型绑定到一个名为TaskListComponent的组件。该组件保留了一个包含每个任务的对象。
导出类TaskListComponent {
任务:对象;
构造函数
私有taskRepositoryService:TaskRepositoryServiceService,
私有taskFactoryService:TaskFactoryService,
私人taskInputDialog:MatDialog){
this.tasks = taskRepositoryService.getAllTasks();
}
我在模板中使用ngFor进行迭代。
-
{{task.value._name}}-{{task.value._color}} -{{task.value.getRunningTime()|异步}}
我正在尝试使用 {{task.value.getRunningTime()| async}}
,但它似乎只在视图上不呈现任何内容。
有帮助吗?我不认为我在做这种可观察的权利...但是我不确定如何在我的Task模型上创建动态值...该值会在视图中不断更新。
答案 0 :(得分:1)
看来您做得对。
尽管您在new Date().getTime()
可能会遇到异常,但是角度异步管道会吞下。尝试(new Date()).getTime()
来检验这个假设。
如果可以的话,请教一些建议
Date.now()
代替(new Date()).getTime()
timer
与map
一起使用,而不是Observable构造函数-会更容易。 example 希望这会有所帮助。
答案 1 :(得分:0)
如果我理解正确,您想根据计时器执行异步操作吗?使用RXJS Timer创建一个间隔触发的可观察对象,然后使用use flatMap将事件映射到更新视图模型的异步调用。可能看起来像这样:
timer(0, 5000).pipe( flatMap(() => taskRepositoryService.getAllTasks()))
.subscribe(tasks => this.tasks = tasks);