【发布时间】:2016-02-23 12:58:28
【问题描述】:
我想在 Angular 2 中创建一个简单的应用程序,它计算(例如)while 循环中的素数并将新找到的值更新到视图中。我想用 *ngFor 实时显示素数数组,以便用户看到应用程序正在计算。该脚本在网络工作者中运行,因此 while 循环不应阻止应用程序。 这就是我的想法:
// Prime Service
getPrimes(n: number) {
var i = 0;
while (1) {
this.isPrime(i) ? this._dataStore.primes.push(i) : null;
this.primes$.next(this._dataStore.primes);
i++;
}
}
只有在所有循环完成后才会推送项目(也使用 for 循环进行测试)。我尝试研究使用生成器,但该功能似乎在 RxJs 5 beta 中不起作用。
有没有更好的解决方案,或者 observables 通常不适合我想要的?
【问题讨论】:
-
我认为
while()正在阻塞;您可以仅使用 observables 创建类似的功能,使用interval创建并使用takeUntil停止执行... -
如何在其中添加我的 getPrimes 函数?最好的方法肯定是将其转换为生成器方法并执行
Observable.from(getPrimes()),但目前似乎不起作用。 -
库primes-generator 简化了这一点。
标签: javascript angular observable rxjs