$.Deferred().resolve()
.then ->delay(1)
.then ->delay(2)
.then ->delay(3)
`then()` Deferred `then()`
d = $.Deferred().resolve()
d = d.then ->delay(1)
d = d.then ->delay(2)
d = d.then ->delay(3)
d1 = $.Deferred()
d = d1.then -> delay(1)
d = d.then -> delay(2)
d.then -> delay(3)
d1.resolve()
<
`$.Deferred()` new `resolve()` Deferred `d1`
then Deferred `resolve()` `reject()` `promise()` Promise
jQuery.Deferred - Yahoo! JAPAN Tech Blog