【发布时间】:2021-03-10 17:01:38
【问题描述】:
我在 Angular 服务中有这种 HTTP 请求功能:
doRequest() {
return this.http.get<any>("/DoStuffController/DoStuff");
}
它是从 Angular 组件调用的。问题是,根据返回值,组件可能需要继续调用它。返回值告诉 Angular 是继续调用还是停止。像这样的:
doRequest() {
this.service.doRequest().subscribe(data => {
if (data.continue) {
doRequest();
}
);
}
可能有数百个连续调用。我担心这可能会导致文字堆栈溢出(双关语)。我想将此递归转换为迭代,就像这样(可能行不通):
doRequest() {
var continue: boolean = true;
do {
this.service.doRequest().subscribe(data =>
continue = data.continue;
);
} while (continue);
}
这种事情可能吗?
【问题讨论】:
-
我认为 JavaScript 自 ES2015 以来启用了尾调用优化,因此您可能无需担心使用递归而不是迭代,我已更正
标签: angular recursion iteration