我有下一个问题:我正在使用它的API为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请求,以查找结果。在我做了最后一个请求之后,寻找结果,然后做平均值。有时平均是在前9个请求完成之前完成的。我怎么才能解决这个问题?
发布于 2017-05-27 19:26:23
您可以使用Observable.zip或Observable.forkJoin一次性解决所有问题,并立即获得结果。这与Promise.all类似。我会亲自使用forkJoin在本例中使用methods/forkjoin.html
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]https://stackoverflow.com/questions/44220776
复制相似问题