2016-04-04 10 views
0

たいと私は、次のコードを持っている:q.all機能が動作しない、私はそれがあまりにも

 function start() { 
      var function = this.buildUpModels; 
      console.log('async wordt gestart'); 
      $q.all([Timeline.updateEvents(),Timeline.updateTimeslots(),Sponsors.updateSponsors(),Biography.updateBiography()]).then(function (rv){    
       console.log('async is done'); 
       function(); 
      });    

      window.localStorage.setItem('check', 'done'); 
      window.localStorage.setItem('planning', '[1,2]'); 
     } 

     function buildUpModels() { 
      console.log('start buildUpModels')    
      Biography.buildObject(); 
      Timeline.buildObject(); 
     } 

次の(すべてが同様にコード化されている)非同期更新機能の一つである:

function updateBiography() { 
      return $http.get("pathToData") 
         .then(function (resp) { 
          console.log("update bio") 
          window.localStorage.setItem('biography', resp.data); 
          window.localStorage.setItem('biographyTimeStamp', Date.now()); 
         }, function (err) { 
          console.log('ERR', err); 
         }); 
     } 

私が理解しているように、q.all()内のすべての約束が解決された後、console.log( "async done")文とfunction()文が呼び出されるべきです。しかし、関数は非同期関数が解決される前に呼び出されます。私は間違って何をしているのですか?

+0

のようなテストツールを使用しているときに '' updateEvents'&updateTimeslots'メソッドのコードを追加することができますのlocalStorageを含むテストコードに気をつけろ!彼らは約束を返すのか? –

+0

'var関数'と 'function();'は構文エラーです。 – Bergi

+0

まず、var関数とfunction()でエラーを修正します。それが今働くかどうか私達に教えてください。ブラウザのコンソールに何らかのエラーがある場合、私たちに報告しない場合。 –

答えて

0

私は答えを見つけたと思います!この問題は純粋にイオン実験室でテストしていたために生じました。

- デバイスnr.1が空のローカルストレージを見つけて、それを埋めます。次に、オブジェクトの構築を開始します。 (そして、明らかにそれが必要な結果を待つ)
- デバイスnr.2は(それを満たす他の電話のために)完全なlocalstorageを見つけて、次にthis.buildUpModelsを直接実行します(コールバックでコールされないのでローカルストレージが空でない場合は非同期関数)。

ヒント:イオンラボ

関連する問題