来自X文件的$ .getJson由LOOP和STORE各自使用JAVASCRIPT在VARIABLE中

时间:2015-04-23 16:23:20

标签: javascript arrays loops

我需要通过在Javascript上使用循环来$.getJSON文件:

///////JS.serial =[156,256] but i can have more than 2 values//
var Electricity = {
    refreshJson : function() {

        for(var i=0; i<JS.nbre_serials;i++)
        url = 'json/kw/kw_'+JS.serials[i]+'.json';

         $.getJSON(url, function(data){
        // ???
            Electricity.processConsumption(data_156,data_256);
        });

    },

我希望将每个对象存储在变量中(即var datas_156)。

1 个答案:

答案 0 :(得分:0)

您可以使用$.when,这样您就可以在所有结果准备就绪后致电Electricity.processConsumption。这是可能的,因为$.getJSON返回一个与promise兼容的对象。

refreshJson : function() {

  var promises = [];
  for(var i=0; i<JS.nbre_serials;i++){
    var url = 'json/kw/kw_'+JS.serials[i]+'.json';
    promises.push($.getJSON(url));
  }

  $.when.apply($, promises)
    .done(function(data_156, data_256){
      Electricity.processConsumption(data_156,data_256);
    })
    .fail(function() {
      //handle errors
    });

}

在示例中$.when.apply($, promises)被调用,因为$.when不接受承诺数组,而是接受可变数量的参数。 与调用Electricity.processConsumption的方式相同,因此每次添加新的“序列”时都不必更改代码。

refreshJson : function() {

  var promises = [];
  for(var i=0; i<JS.nbre_serials;i++){
    var url = 'json/kw/kw_'+JS.serials[i]+'.json';
    promises.push($.getJSON(url));
  }

  $.when.apply($, promises)
    .done(function(){
      Electricity.processConsumption.apply(Electricity,arguments);
    })
    .fail(function() {
      //handle errors
    });

}

您的processConsumption功能可能类似于:

//somewhere in the Electricity class
processConsumption: function(){
  var data_156 = arguments[0];
  var data_256 = arguments[1];
  //do stuff
}