Deferredオブジェクトの説明を読んでもなかなか理解がしにくいもの。
だからここに使い方をメモしておきます。
Deferredオブジェクトの使い方
function myFunction(){
var deferred = $.Deferred()
$.ajax({
url:'',
dataType; 'Json',
type; 'POST', //jQuery1.9以降は非推奨なので→method:'POST'
data: {}
})
.done(function(){
deferred.resolve()
})
.fail(function(){
deferred.reject()
})
return deferred.promise()
}
myFunction().done( result => console.log('非同期処理が完了しました')
myFunction().fail( result => console.log('非同期処理が失敗しました')
あるいは
function myFunction(){
return $.Deferred(function(deferred){
$.ajax({
url:'',
dataType; 'Json',
type; 'POST', //jQuery1.9以降は非推奨なので→method:'POST'
data: {}
})
.done(function(){
deferred.resolve()
})
.fail(function(){
deferred.reject()
})
}).promise()
}
myFunction().done( result => console.log('非同期処理が完了しました')
myFunction().fail( result => console.log('非同期処理が失敗しました')
Deferredオブジェクトは、非同期通信が完了した値を取得したい場合に便利な機能だと思いました。
おまけ
contentType
: サーバーに送信するデータの形式を指定します。
dataType
: サーバーから返されるデータの形式を指定します。
ajax通信がエラーになった時に見直すといい点です。