2014-02-20 2 views
1

У меня есть приложение Rally, которое требует значительного времени загрузки, и оно имеет некоторые циклы, содержащие Data Stores. Мне нужно найти условие, когда приложение завершило загрузку. Когда выполнение приложения будет завершено, я хочу обновить свою страницу. Есть ли что-то вроде onLoad(), которое я могу использовать, чтобы уведомить, что приложение загрузилось полностью, а затем я мог добавить window.location.reload внизу?Приложение ралли onLoad

ответ

4

Я бы предложил использовать функцию обратного вызова для одного хранилища данных или ряд обещаний для нескольких хранилищ данных. Первый довольно простой, но я обычно обрабатываю последнее:

В этом случае я одновременно загружаю все Истории пользователей, дефекты и тестовые примеры в текущую область, затем, когда все записи были успешно загружены, будет вызвана функция «успех».

launch: function() { 
    Deft.Promise.all([ 
     this.loadRecords('UserStory'), 
     this.loadRecords('Defect'), 
     this.loadRecords('TestCase') 
    ]).then({ 
     success: function(recordSets) { 
      // recordSets = [ 
      // UserStoryRecords, 
      // DefectRecords, 
      // TestCaseRecords 
      // ]; 
     }, 
     failure: function() { 
      //Handle error loading the store here... 
     } 
    }); 
}, 

loadRecords: function(model) { 
    var deferred = Ext.create('Deft.Deferred'); 
    Ext.create('Rally.data.WsapiDataStore', { 
     limit : Infinity, 
     model : model, 
     fetch : ['Name','ObjectID'] 
    }).load({ 
     callback : function(records, operation, success) { 
      if (operation.wasSuccessful()) { 
       deferred.resolve(records); 
      } else { 
       deferred.reject(); 
      } 
     } 
    }); 
    return deferred.promise; 
} 

Надеюсь, это поможет!

+0

Привет, спасибо за ваш ответ. У меня есть цепочечная связь хранилищ данных, в которых я передаю результат из одного хранилища данных в следующий, это должно выполняться синхронно. Первое хранилище данных находится внутри цикла for. Я хочу, чтобы функция end() вызывалась, когда цикл for выполнялся полностью. Но это не работает. –

+0

Я использовал 'Deft.Promise.all' для загрузки магазинов в parrallel, но вы могли бы так же легко сделать это серийно. Поскольку вы передаете один результат хранилища другому, я просмотрю документы для 'Deft.Chain.pipeline'. http://docs.deftjs.org/deft-js/0-8-0/#!/api/Deft.promise.Chain-method-pipeline –

Смежные вопросы