我在for循环中调用http.get
服务,我的代码工作正常,问题是即使observable不完整,循环也会继续。
这是我的代码:
Angular 2组件:
let max = 5;
for (let i = 1; i <= max; i++) {
let boxNo = i > 9 ? "0" + i : "00" + i;
this.invoiceService.generateChecklist(prefixAndLetter, boxNo).subscribe(
result => {
console.log(result.data);
}
)
}
MVC控制器:
[HttpGet]
public ActionResult GenerateChecklist(string prefixAndLetter, string boxNo)
{
if (!string.IsNullOrWhiteSpace(prefixAndLetter))
{
return Json(new { success = true, data = boxNo }, JsonRequestBehavior.AllowGet);
}
return null;
}
这是我得到的结果:
002
003
001
005
004
答案 0 :(得分:2)
您可以使用concatAll
,在通知订阅者之前等待所有异步调用完成:
let boxes = [];
let max = 5;
for (let i = 1; i <= max; i++) {
let boxNo = i > 9 ? "0" + i : "00" + i;
boxes.push(boxNo);
}
Observable.of(boxes.map(t=> this.invoiceService.generateChecklist(prefixAndLetter, t)))
.concatAll()
.subscribe(result => {
result.forEach((item)=> console.log(item.data));
});