0

我正在尝试将 AngularJS 1.6 的以下代码转换为聚合物 2.0

AngularJS

for ( int i=0; i<=10; i++ )
{
 // call rest service for Rates
    var rates = fxRateService.query({ids : rateIds}, function() {
        //do some processing here
    }
}

聚合物代码

for ( int i=0; i<=10; i++ )
{
 // call rest service for Rates
 this.$.rateAjax.url = 'api/v1/fxrates?ids=' + rateIds;
 this.$.rateAjax.generateRequest();

}

requestEnd() {
    // do processing based on the response retrieved

}   

问题是在 Polymer 中 FOR 循环运行时,程序不会以同步方式运行。如果 FOR 循环运行 5 次,程序会调用 5 次 rest 服务,但程序会在 FOR 循环的所有迭代完成后进入 requestEnd 方法。

我想要的是,它应该调用 Rest Service,等待服务返回并执行 requestEnd 方法,然后像 AngularJS 代码那样对 Rest Service 进行第二次调用。

你能指导我吗?

4

1 回答 1

0

如果您将“requestEnd”方法设计为Promise,那么您可以执行以下操作:

function queryAll(i){
    if(i === 10)
    {
        return;
        // All done
    }

    return this.$.rateAjax.generateRequest().then(requestEnd).then(()=>{
        i++;
        return queryAll(i);
    })   
}
于 2017-07-27T15:27:55.450 回答