在marionetteJS中同时进行多个API调用

时间:2014-07-29 12:40:36

标签: api marionette

我使用forcast api获取天气数据。在牵线木偶中,我使用模型将API rulRoot定义为

var weatherApi = Backbone.Model.extend({
        defaults:{
                lat:"",
                lng:"",
                timeStamp:"",
                units:"",
                response:""
        },
        urlRoot: function(){
                return '/api/web/forecast?lat='+ this.get("lat") + '&long=' + this.get("lng") +'&time=' + this.get("timeStamp") + '&units='+this.get("units");
        }
});

然后我实例化为

weatherApiGddObj = new weatherApiInstance();

我用这个对象来获取api调用响应。现在我想要的是从今天到接下来的30天同时进行多个api呼叫,所以如果我一个接一个地做,那么它将花费大量时间来获得所有响应。我怎么用牵线木偶做这件事?

1 个答案:

答案 0 :(得分:2)

最好有一种方法允许您在一个请求中获取天数范围内的数据。但根据你的条件,我会这样做:

var date, startDate = someTimestamp, day = 86400, 
    endDate = startDate + day * 30, promises=[];

for(date = startDate; date < endDate; date += day){
    weatherApiGddObj.set('timestamp', date);
    promises.push(weatherApiGddObj.fetch());
}

$.when.apply($,promises).done(function(){
    var data = Array.slice.call(arguments);
    console.log(data);
});

我建议你阅读Deferred Object