首頁 > web前端 > js教程 > 主體

你應該在 AngularJS Promise 中使用回調嗎?

Barbara Streisand
發布: 2024-11-09 20:22:02
原創
802 人瀏覽過

Should You Use Callbacks with AngularJS Promises?

AngularJS 中的回調反轉:反模式

在AngularJS 中,將回調傳遞給Promise 的服務是常見的做法。但是,這種方法可能會引入反模式並阻礙 Promises 的好處。

反模式範例:

考慮以下程式碼,其中getTokens 服務接受回呼函數:

...
getTokens: function(callbackFn) {
  $http.get('/api/tokens').then (function onFulfilled(response) {
    callbackFn(response.data);
  });
}
...
登入後複製

這種方法有幾個缺點:

  • 控制反轉:回調函數在服務上下文中執行,反轉控制流並使其難以遵循程式碼。
  • 損壞的 Promise 連結:回調會阻止 Promise 被連結起來以按順序處理多個事件或操作資料。
  • 複雜性: 明確處理回調會為程式碼庫增加不必要的複雜性。

最佳實踐重構:

要解決此反模式,重建程式碼如下:

...
getTokens: function() {
  return $http.get('/api/tokens');
}
...
登入後複製

在呼叫模組中,使用返回的Promise來處理結果:

yourModule.getTokens()
  .then(function(response) {
    // handle it
  });
登入後複製

最佳實踐的好處:

採用這種最佳實踐有幾個優點:

  • 保留Promise 連結: 現在可以連結Promise 以順序執行多個操作,從而提高程式碼的可讀性和可維護性。
  • 簡化的程式碼:刪除回呼的明確處理簡化了程式碼庫並消除了潛在的錯誤。
  • 提高了可測試性:Promise 為測試提供了一個乾淨的介面非同步操作,更容易驗證程式碼行為。

以上是你應該在 AngularJS Promise 中使用回調嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板