0

任何人都可以告诉我如何在聚合物 2.0 中对 Rest 服务进行同步调用。

我正在尝试计算客户总余额,只有在收到以下所有三个 Rest 服务的响应后才能执行此操作。

有什么方法可以使用一些 api 来同步它们,例如 Promise 或任何其他

<iron-ajax id="balanceAjax" url="/balances" last-response="{{res1}}"></iron-ajax>
<iron-ajax id="currencyAjax" url="/currencies" last-response="{{res2}}"></iron-ajax>
<iron-ajax id="rateAjax" url="/rates" last-response="{{res3}}"></iron-ajax>
4

1 回答 1

2

您可以对所有三个属性(res1、2 和 3)具有相同的观察者功能,如果它们都具有某些值,则在观察者中继续并计算该值。

res1: {
   observer: 'responseChanged'
},
res2: {
   observer: 'responseChanged'
}
res3: {
   observer: 'responseChanged'
},
...
responseChanged: function() {
   if(this.res1 && this.res2 && this.res3) {
      //calculate total balance
   }
}

你也可以只有一个观察者而不是三个

res1: {
},
res2: {
}
res3: {
},
...
observers: [responseChanged(res1, res2, res3)],
responseChanged: function() {
   if(this.res1 && this.res2 && this.res3) {
      //calculate total balance
   }
}

或者,您也可以on-response使用iron-ajax. 最后,如果您的 res1 ,2 和 3 预计在 api 调用之前就具有价值,您可以在on-response每个 ajax 的侦听器中设置一些布尔值,并在这些布尔值上设置观察者。

于 2017-04-12T14:08:29.190 回答