六大原則之一:單一職責原則
阿新 • • 發佈:2019-05-01
ret 延遲函數 data resolve image wfq 成功 appdata scn
解決回調地獄的方法:
1.保持代碼的簡潔性
2.模塊化
綜合上述,可使用六大原則之一單一職責原則
例:
//延遲函數 六大原則 // var df = $.Deferred(); // 有三種狀態: done 成功 fail 失敗 progress 正在進行 // 分別返回三個值:resolve reject notify var df = $.Deferred(); // 註冊成功的回調函數 df.done(function () { console.log(‘yes‘); }) // 註冊失敗的回調函數 df.fail(function () { console.log(‘no‘); }) //註冊正在進行的回調函數 df.progress(function () { console.log(‘waiting‘); }) // 異步 function createScore() { setInterval(function () { var time = Math.random() * 100; //如果大於60,返回成功 if (time > 60) { df.resolve(); } else if (time < 50) { df.reject(); //返回失敗 } else { df.notify(); //正在進行 } }, 1500) } createScore();運行:返回隨機數
怎麽用它呢? 用法如下
// 異步 function createScore() { var df = $.Deferred(); //在裏面調用它,最後返回一個值 setInterval(function () { var time = Math.random() * 100; if (time > 60) { df.resolve(); } else if (time < 50) { df.reject(); } else { df.notify(); } }, 1500) //返回成功後的值(需要在外面註冊) ps:在這個函數裏面,有可能會返回失敗,因為是隨機數 return df.promise(); } // 調用返回成功後的值 var df = createScore(); // 註冊成功的回調函數 df.done(function () { console.log(‘yes‘); }) // 註冊失敗的回調函數 df.fail(function () { console.log(‘no‘); }) //註冊正在進行的回調函數 df.progress(function () { console.log(‘waiting‘); })運行結果 返回的三個值可以傳傳參,傳多少個都可以 例:
// 異步 function createScore() { var df = $.Deferred(); //在裏面調用它,最後返回一個值 setInterval(function () { var time = Math.random() * 100; if (time > 60) { df.resolve(‘成功‘); } else if (time < 50) { df.reject(‘失敗‘); } else { df.notify(‘等待‘); } }, 1500) //返回成功後的值(需要在外面註冊) ps:在這個函數裏面,有可能會返回失敗,因為是隨機數 return df.promise(); } // 調用返回成功後的值 var df = createScore(); // 註冊成功的回調函數 df.done(function (ms) { console.log(‘yes‘ + ‘ ‘ + ms); }) // 註冊失敗的回調函數 df.fail(function (ms) { console.log(‘no‘ + ‘ ‘ + ms); }) //註冊正在進行的回調函數 df.progress(function (ms) { console.log(‘waiting‘ + ‘ ‘ + ms); })
六大原則之一:單一職責原則