2016-09-02 6 views
0

私はEmberアプリケーションを構築していますが、ストアを呼び出すのと同じ問題が発生していますが、ストアがデータを取得する前にバックエンドから。具体的には、findRecordに問題があります。Ember.js - 関数がストアされる前に終了しました

var admin = this.store.findRecord('admin', 1); 
console.log(admin.get('season')); 
console.log('Are we here?'); 

との両方の場合で

this.store.findRecord('admin', 1).then(function(admin) { 
    console.log(admin.get('season')); 
}); 
console.log('Are we here?'); 

Are we here?はシーズン前に記録されます。私はそれを両方の方法を実装しました。明らかに、コンソールログは例のためのものであり、実際に何をしようとしているのかという問題を引き起こします。誰もこの遅延の簡単な修正を知っていますか?

ありがとうございました。

+1

[非同期呼び出しからの応答を返すにはどうすればよいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-呼び出し) –

+0

[非同期呼び出しからの応答を返すにはどうすればよいですか](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)戻り値を使用しない場合でも重複が適用されます - あなたはまだ非同期関数からの復帰後に何か起こることを期待しています。 –

+1

Ember DataのAPIの中には、** synchronous **というものがあります。これは即座に値を返すことを意味します。たとえば、 'peekRecord'です。 'findRecord'は**非同期**です。これは約束を返し、どんな処理も' then'節の中で行わなければなりません。 –

答えて

1

もちろんです。これは非同期の動作です。したがって、結果は、findRecord()から返された約束を解決するために、いくつかの時間がかかる:

this.store.findRecord(); //synchronous 
console.log('we are here'); //synchronous 

その間に約束がfindRecord()から返された(非同期動作)解決さ

console.log(admin.get('season')); 
0

非同期呼び出しますあなたのコードが進行するのを止めないでください。それはその目的です。それ以外の場合は、データのロード中にUIの更新やユーザーの操作をブロックします。

関連する問題