您好我有一个现有的Angular 1.6.x项目,其中我做过像
这样的事情var defer1 = $q.defer();
var defer2 = $q.defer();
$http.get(refTrustUrl).then(function (res) {
// some code here
defer1.resolve(true)
}, function () {
});
$http.get(candTrustUrl).then(function (res) {
// some code here
defer2.resolve(true)
}, function () {
});
$q.all([defer1.promise, defer2.promise]).then(function () {
// some code here
})
现在我必须将此项目迁移到Angular 4/5
,Observable
中是否有任何解决方法与$q.all
的功能相匹配。
注意:我读到了Observable.forkJoin
,但没有找到
我做了类似的事情:
Observable.forkJoin(
this.http.get(refTrustUrl, {responseType: 'text'}),
this.http.get(candTrustUrl, {responseType: 'text'})
).subscribe(
data=>{
console.log(data,1)
}
)
但它没有用。
请帮助thanx ...
我提到这个link来研究forkJoin
答案 0 :(得分:1)
您的代码应该是这样的(来自您提供的链接)。
Observable.forkJoin(
this.http.get(refTrustUrl).map((res:Response) => res.json()),
this.http.get(candTrustUrl).map((res:Response) => res.json())
).subscribe(
data => {
this.refTrust = data[0]
this.candTrust = data[1]
},
err => console.error(err)
);
你可以试试这个吗?如果它有用吗?。
而且你也不需要像这样订阅流内部。
Observable.forkJoin(
this.http.get(refTrustUrl, {responseType: 'text'})
.subscribe(res => {
当您完成所有转换后,您应该在结束时订阅。