下記のソースは、ブレイクスルーjavascript99頁のソースです。
ドキュメント要素をクリックするたびにコンソールが表示されるが、二回目以降は、1秒処理を遅らせるものです。
javascript
1//jquery 3.3.1 2var prevState = new $.Deferred().resolve().promise(); 3 4function asyncFuncDef() { 5 var deferred = new $.Deferred(); 6 setTimeout(function() { 7 deferred.resolve("done"); 8 }, 1000); 9 return deferred.promise(); 10} 11 12$(document).on("click",function() { 13 prevState = prevState.then(function() { 14 console.log("done"); 15 return asyncFuncDef(); 16 }); 17});
ここで疑問なのですが、一行目のメソッドチェーンをしているオブジェクトのうちの最後にあたる.promise()が何なのかよく理解できません。これは、何のためにpromise()を置いているのでしょうか。
一行目をvar prevState = new $.Deferred().resolve()
のようにしても動きますが、メソッドチェーンの最後にpromise()を置くことで何の効能が得られるのでしょうか。
また、そもそもなぜ、ソースの一行目で処理を完了resolveしたことを通達させたのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。