首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用“观察者”代替`$q.all`

用“观察者”代替`$q.all`
EN

Stack Overflow用户
提问于 2018-05-02 08:21:41
回答 1查看 42关注 0票数 1

嗨,我有一个现有的角1.6.x项目,在这个项目中,我做了一些类似的事情

代码语言:javascript
复制
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的文章,但没有看到我在哪里做了这样的事情:

代码语言:javascript
复制
 Observable.forkJoin(
  this.http.get(refTrustUrl, {responseType: 'text'}),
  this.http.get(candTrustUrl, {responseType: 'text'})
   ).subscribe(
  data=>{
    console.log(data,1)
  }
)

但没起作用。请帮我..。我参考了这个http://www.metaltoad.com/blog/angular-2-http-observables来研究about__forkJoin

EN

Stack Overflow用户

回答已采纳

发布于 2018-05-02 08:39:00

您的代码应该是这样的(从您提供的链接)。

代码语言:javascript
复制
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)
);

如果有用,你能试试这个吗?

而且你也不需要订阅这样的内部流。

代码语言:javascript
复制
Observable.forkJoin(
  this.http.get(refTrustUrl, {responseType: 'text'})
    .subscribe(res => {

当您完成所有转换时,您应该在最后订阅。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50130078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档