Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何等待9 HTTP GET请求2_Angular_Http_Jenkins_Jenkins Plugins - Fatal编程技术网

Angular 如何等待9 HTTP GET请求2

Angular 如何等待9 HTTP GET请求2,angular,http,jenkins,jenkins-plugins,Angular,Http,Jenkins,Jenkins Plugins,我有下一个问题:我正在使用Jenkins的API REST为Jenkins做一个插件。我希望获得所有构建的所有结果,并为每个作业执行平均失败次数/nºexec。我想得到最后10个版本,所以我必须发送10个http get。 实际上,我的代码是: for (var j = init; j >= 1; j--){ this.http.get(data2.builds[j].url + this.finalURL).subscribe(response => { l

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

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请求以查找结果。在我完成最后一个请求后,我会寻找结果并计算平均值。有时平均值是在前9个请求完成之前完成的。如何解决此问题?

您可以使用Observable.zip或Observable.forkJoin一次性解决所有问题,并立即获得结果。。这类似于Promise.all。 在这种情况下,我个人会使用forkJoin

var source = Rx.Observable.forkJoin(
  Rx.Observable.return(42),
  Rx.Observable.range(0, 10),
  Rx.Observable.from([1,2,3]),
  RSVP.Promise.resolve(56)
 //Your http calls will be here instead
);

var subscription = source.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

// => Next: [42, 9, 3, 56]