【发布时间】:2018-08-17 21:09:51
【问题描述】:
我正在做一个嵌套订阅,我知道这不是完美的方式。 我有这样的事情:
this.route.params.subscribe((params) => {
this.order$
.getMailCommande(this.id)
.subscribe((datas) => {
var Object = localStorage.getItem('dataCommand');
var test = JSON.parse(retrievedObject);
this.over = test.over;
while (this.over == false) {
this.order$
.getMoreInfo(this.id, this.type, this.nbr)
.subscribe((datas2) => {
var array = datas2.MoreInfo;
var Object2 = localStorage.getItem('dataCommand');
var test2 = JSON.parse(Object2);
test2.ListeInfo.push(array);
this.over = true;
});
}
自从我添加了循环后,我得到了一个无限循环,我正在寻找使用 RxJS 中的 switchmap 或运算符更改此代码,但我还没有成功。
关于我的无限循环的任何想法以及如何保持相同的逻辑?
提前致谢
【问题讨论】:
-
它更依赖于您对代码的要求,
this.over还被操纵在哪里?在您的代码中,您似乎只想运行一次循环(它不会,因为async),因为您将this.over设置为true。所以问题是你真正想要的逻辑是什么? -
我自己将 this.over 设置为 true 以避免无限循环(但我猜由于异步而不起作用)。但实际上,我得做一些操作才能知道 this.over 是真还是假。所以我有可能在退出循环之前循环了几次
标签: javascript angular typescript rxjs