次のコードがあるとします。
function someProcess() {
var deferred = $.Deferred();
apiCall(function (recvData) {
deferred.resolveWith(null, [recvData]);
});
return deferred.promise();
}
function mainFunction() {
$.when(someProcess())
.then(someOtherProcess);
}
この例では、単一の deferred が解決されるのを待つだけで済みます。この場合、2 番目の関数を上記のように書くことと、次のように書くことの違い (もしあれば) は何ですか?
function mainFunction() {
someProcess()
.then(someOtherProcess);
}
つまり、jQuery の遅延オブジェクトを使用していることが明確になるので、最初の方法で書くのが好きですが、この場合に必要かどうか知りたいです。
編集: then() 呼び出しのタイプミスを修正しました。それをキャッチしてくれてありがとう。
編集:nbinowitzさん、回答ありがとうございます。when() を使用することと、生の jQuery 遅延オブジェクト インスタンスを使用することに関して、私が確信を持っていなかったポイントを釘付けにしたと思います。遅延オブジェクト全体ではなく promise を返すようにコードを再度修正しました。それが私が実際のコードで行う方法ですが、ここに追加するのを忘れていました。