サーバーに ajax リクエストを送信する必要があるプロセスがありますが、ajax リクエストが開始される前にスケジューラを停止し、リクエストが完了したらスケジューラを再起動する必要があります。
次のコードを使用してこれを機能させました。
scheduler.stop()
.done(function () {
setQuestionStatus().done(scheduler.start);
});
しかし、これを次のように簡単に書く方法があるはずです。
scheduler.stop().then(setQuestionStatus).then(scheduler.start);
私の問題は、このように記述すると、チェーン内の各項目が解決された後ではなく、scheduler.stop が解決されるとすぐに setQuestionStatus と scheduler.start の両方が呼び出されることです。
2番目の例で私が間違っていることを誰か教えてもらえますか?
参考までに、scheduler.stop と setQuestionStatus の両方が、次のパターンを使用して promise を返します。
var setQuestionStatus = function(){
return $.Deferred(function (def) {
// Do stuff
def.resolve();
}).promise();
}