如何等待9 HTTP GET请求Angular 2

时间:2017-05-27 19:22:01

标签: angular http jenkins jenkins-plugins

我有下一个问题:我正在使用其API REST为Jenkins做插件。我希望获得所有构建的所有结果,并为每个作业执行平均失败/nºexec。我想获得最后10个版本,所以我必须发送10个http获取。 其实我的代码是这样的:

for (var j = init; j >= 1; j--){
    this.http.get(data2.builds[j].url + this.finalURL).subscribe(response => {
        let data3 = response.json();
        if(data3.result == "FAILURE"){
            numberOfFails = numberOfFails+1;
        }
    }, error => console.error(error));
}
this.http.get(data2.builds[0].url + this.finalURL).subscribe(response => {
    let data3 = response.json();
    if (data3.result == "FAILURE"){
        numberOfFails = numberOfFails + 1;
    }
    let average = numberOfFails/(init+1);
    console.log(numberOfFails +" " + init+1 + " " +average);
    if (average <= 0.1){
        this.successList.push(new Job(data3.fullDisplayName, data3.result,data2.url, average));
    } else if (average<0.8){
        this.brokenList.push(new Job(data3.fullDisplayName, data3.result, data2.url, average));
    }else {
        this.failureList.push(new Job (data3.fullDisplayName, data3.result, data2.url, average));
    }

我做了9个HTTP请求,寻找结果。在我做最后一次请求寻找结果后,我做了平均值。有时平均值是在前一个请求完成之前完成的。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你可以使用Observable.zip或Observable.forkJoin一次解决所有问题,并立即得到结果......这与Promise.all类似。 在这种情况下,我个人会使用forkJoin http://xgrommx.github.io/rx-book/content/observable/observable_methods/forkjoin.html

test.setLaunchDate(DateTime datetime){
   this.LaunchDate = datetime;
}