第一:$.Promise();
存在しないため使用できません。
繰延オブジェクトができるオブジェクトである作成の約束をしてまでその状態を変更しますresolved
かrejected
。独自の関数を作成し、呼び出し元のコードにpromiseを提供する場合は、通常、遅延が使用されます。あなたは価値のプロデューサーです。
約束は名前が言うように、将来の値についての約束です。その値を取得するためにそれにコールバックを添付することができます。約束はあなたに「与えられ」、あなたは将来の価値の受け手です。
promiseの状態を変更することはできません。promiseを作成したコードのみが、その状態を変更できます。
例:
1.(プロデュース)独自の関数にpromise-supportを提供する場合は、据え置きオブジェクトを使用します。値を計算し、Promiseがいつ解決されるかを制御したいとします。
function callMe() {
var d = new $.Deferred();
setTimeout(function() {
d.resolve('some_value_compute_asynchronously');
}, 1000);
return d.promise();
}
callMe().done(function(value) {
alert(value);
});
2.(転送)それ自体がpromiseを返す関数を呼び出す場合は、独自の遅延オブジェクトを作成する必要はありません。あなたはただその約束を返すことができます。この場合、関数は値を作成しませんが、それを転送します(種類):
function fetchData() {
return $.ajax({...});
}
fetchData().done(function(response) {
});
3.(受信)プロミス/値を作成したり渡したりしたくない場合、それらを直接使用したい場合があります。つまり、いくつかの情報の受信者です。
$('#my_element').fadeOut().promise().done(function() {
});
もちろん、これらすべてのユースケースを混在させることもできます。関数は(たとえばAjax呼び出しからの)値のレシーバーになり、それに基づいて異なる値を計算(生成)することができます。
関連する質問: