いままでjQuery.Deferred.promose
使ったことがなくてでも困らなかったからそのままにしててずっともやもやしてた。
検索してもちゃんと説明されてるのがなくて(サンプル数2)よくわかんなかったけどreferenceにちゃんと書いてあった。
The Promise exposes only the Deferred methods needed to attach additional handlers or determine the state
deferred.promise() | jQuery API Documentation
sleep = (n) ->
deferred = $.Deferred()
setTimeout (n) ->
deferred.resolve(true)
, n
d = sleep().then () ->
...
みたいなときにsleepの外側でd.resolve()
されたりしないようにするだけなのね。
というよりDeferredにはpromiseの値を変更できるメソッドがついてるということか。
わかってからほかのを読むと、たしかにそう書いてある...