【问题标题】:run iron ajax in synchronous way in Polymer 2.0在 Polymer 2.0 中以同步方式运行 Iron ajax
【发布时间】:2017-07-27 23:27:55
【问题描述】:

我正在尝试将 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 进行第二次调用。

你能指导我吗?

【问题讨论】:

  • 因此您希望使用不同的查询进行 10 个请求...同时执行所有请求并在返回时处理每个响应不是更快吗?还是您需要等待所有响应才能进行处理?

标签: polymer-2.x


【解决方案1】:

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

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

    return this.$.rateAjax.generateRequest().then(requestEnd).then(()=>{
        i++;
        return queryAll(i);
    })   
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多