0
私は互いに待ち合わせる2つのネストされた関数が実際に間違った順序で実際に実行される遅延使用の問題に直面しています。 私は戻って約束をミックスする場所を見つけられません。jQueryの遅れに関する問題
ここで私は達成しようとしています。モバイルCordovaアプリでは、ユーザーがゲームビューに入ると、WebSqlで質問をダウンロードする機能があり、1つの質問を取得してから、スライダー機能でコンテンツを読み込みます。 .done()
イベントでgetQuestion
関数をネストしました。
router.addRoute('game', function() {
'use strict';
//Reload Question List when User enter the Game view.
questionService.initialize().done(
//Now we got question, initialize the Game View
questionService.getQuestion().done(
function (data) {
console.log(data);
slider.slidePage(new GameView(data).render().$el);
})
);
ここでは、両方の機能で$.Deferred()
を使用する方法を示します。最初に私は$.Deferred()
と宣言し、関数の最後に私は約束を返します。
しかし、私のgetQuestion()
は、以下のコードでは、開始前にinitialize()
関数が終了するのを待たずにいます。
私は約束を折り返しましたか?
var getQuestions = function(param) {
var deferred = $.Deferred();
param = param;
$.ajax({
type: 'POST',
url: 'myserver',
data: {
region: uRegion
},
success: function(value, status) {
//do something with value
this.db = window.openDatabase('database details');
this.db.transaction(function(tx) {
storeQuestion(tx);
}, function(error) {
deferred.reject('Transaction error: ' + error);
}, function() {
//Transaction success
deferred.resolve();
});
},
error: function(textStatus, exception) {}
});
return deferred.promise();
};