3
これはおそらくばかげたバグですが、ここにはあります。
$ .ajax()呼び出しの成功関数内でjQuery Promiseを拒否する必要があります。戻り値 "success"はブール値です。
function doSomething() {
var myPromise = $.ajax({
method: "POST",
url: "/url/to/use",
data: {"value":$("#value").val()},
success: function(data) {
if (data.success == false) {
ConfirmMessage.showErrorMessage(data.messages[0]);
return new $.Deferred().reject().promise();
} else {
// do other stuff
}
}
});
return myPromise;
}
doSomethingの()は、次に()チェーンの後に使用されます。
doSomething().then(doSomethingElse).then(soOn).then(soForth);
だから私は約束を拒否し、チェーンを破ることができるようにする必要があります。
ヘルプありがとうございます。
解決済みのajax約束を拒否することはできません。おそらく、ajaxの約束を返すのではなく、ajaxコールバック内で解決済みまたは拒否済みとマークされた別の約束オブジェクトを返すことができます。 – apokryfos