如何在Angular 5中的其他函数中使用服务响应结果

时间:2018-04-09 06:04:37

标签: angular

我打电话给服务

 constructor(private checkout: CheckoutService,private routers: Router) { }

 this.checkout.getCustomerOrderId(userid).subscribe(result=>{ result });

******服务文件******中使用的getCustomerOrderId()函数

 getCustomerOrderId(param){
            return this.http.get(this.ROOT+'getcustomerorderid'+param).map(
              (response: Response) => {
                return response.json();
              });
            }

******在ts文件******中使用MyOtherFunction()函数

MyOtherFunction(){

    Here i want to use result data   (service response result)

}

然后正确回复响应。 所以我如何在ts文件中的另一个函数中使用此响应结果。 感谢

3 个答案:

答案 0 :(得分:0)

制作另一个变量并将数据存储在其中

现在使用这种方法取决于你实际调用MyOtherFunction()的时间,如果你在组件启动时调用它,你不能确定你的其他变量中是否有数据,因为它是异步的。然而,如果你在一个事件或某个事件中调用了这个函数,那么你可以确定你的另一个另一个变量有数据。

您可以在html中无关地使用此另一个变量。 但是,如果你在开始时调用MyOtherfunction,那么你应该有一个事件发射器,或者在为你的另一个变量分配结果后在响应调用中调用该函数

像这样的东西

this.anotherVariable: any;

getCustomerOrderId(param){
            return this.http.get(this.ROOT+'getcustomerorderid'+param).map(
              (response: Response) => {
                this.anotherVariable = result
                this.MyOtherFunction()
                return response.json();
              });
            }

答案 1 :(得分:0)

在MyOtherFunction中使用变量之前,必须确保服务已运行。例如,使用console.log

仔细检查
This.laterUse:any

this.checkout.getCustomerOrderId(userid).subscribe(result=>{ this.laterUse =  result });

getCustomerOrderId(param){
            return this.http.get(this.ROOT+'getcustomerorderid'+param).map(
              (response: Response) => {
                return response.json();
              });
            }

MyOtherFunction(){

    console.log(this.laterUse) 

}

答案 2 :(得分:0)

如果我理解,您希望在 myOtherFunction 中使用 getCustomerOrderID 。因此,如果您在 myOtherFunction 中订阅 getCustomerOrderID ,您将在ts文件中处理此响应。 这是代码:

MyOtherFunction(userid){
    this.checkout.getCustomerOrderId(userid).subscribe(
       result => { 
           // Here you can use the result data
       },
       error => {
           console.log(error);
       }
   );
}
  

WITH GLOBAL PROPERTY,不推荐。

private customerOrderID;

constructor(private checkout: CheckoutService,private routers: Router) { }

initializeCustomerId(userid){
   this.checkout.getCustomerOrderId(userid).subscribe(
      result => {
         this.customerOrderID = result;
      },
      error => {
         console.log(error);
      }
   );
}

MyOtherFunction(){
   // If you wants to initialize this customerOrderID
   initializeCustomerId(userid);
   // If you initialized customerOrderID you will have the result here
   this.customerOrderId;
}

现在,您将选择初始化此customerID的方法,以及构造函数或将要使用的函数。