为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Angular2中链接Http调用?

如何在Angular2中链接Http调用?

胡子哥哥 2019-08-19 14:20:04
如何在Angular2中链接Http调用?我是Angular2和Http Observable的新手。我有一个调用Http服务并返回Observable的组件。比我订阅Observable,它工作正常。现在,我希望在该组件中,在调用第一个Http服务之后,如果调用成功,则调用其他Http服务并返回该Observable。因此,如果第一次调用不成功,则组件返回Observable,而它返回Observable的第二次调用。所以,问题是,链接Http调用的最佳方法是什么?有没有优雅的方式,比如monads?
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

使用rxjs来完成这项工作是一个非常好的解决方案。它易于阅读吗?我不知道。


另一种方法是执行此操作并且更具可读性(在我看来)是使用await / async。


示例:


async getContrat(){

    //get the customer

    const customer = await this.http.get('./customer.json').toPromise();


    //get the contract from url

    const contract = await this.http.get(customer.contractUrl).toPromise();


    return contract; // you can return what you want here

}

然后叫它:)


this.myService.getContrat().then( (contract) => {

  // do what you want

});

或者在异步功能中


const contract = await this.myService.getContrat();

您还可以使用try / catch来管理错误:


let customer;

try {

  customer = await this.http.get('./customer.json').toPromise();

}catch(err){

   console.log('Something went wrong will trying to get customer');

   throw err; // propagate the error

   //customer = {};  //it's a possible case

}


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 735 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信