我想了解角度服務和組件的生命週期。有角度的承諾能活多久?
說我有一個使用一個http服務的控制器:
function MyController($scope, $http) {
$http.get('/service').success(function(data) {
// handle the response
});
}
的事情是,該控制器可被連接到的視圖。我想確保如果視圖已被刪除,響應將被丟棄,這是爲了防止與可能在應用程序的其他部分觸發的其他請求發生衝突。控制器的實例是否會被銷燬,並且如果視圖被刪除,來自$http
服務的未決呼叫將被取消?例如,當用戶從頁面導航(不重新加載)導致新節的Javascript呈現?
[編輯]我創建了一個jsfiddle這表明,至少在$超時服務,掛起的操作仍然是$scope
通過導航離開後銷燬運行。是否有一種簡單的方法將異步操作附加到作用域,以便它們自動銷燬?
你爲什麼不考呢?因爲它是您需要提供更多關於您的應用程序的信息才能得出確鑿的答案。 – ocodo
完成:http://jsfiddle.net/ADukg/4839/。我編輯了這個問題以包含我所嘗試的內容。 –
你還沒有真正解釋你的控制器的生命週期。只要您的管理員居住,您的範圍就會生活。你的控制器只要在DOM中並且在Angular中註冊('ng-if'和'ng-view',路由就會銷燬DOM並重建它的新實例,'ng-show'不會)。 AJAX服務是AJAX服務:調用將在瀏覽器的內存中生存,避免垃圾收集,在關閉中,直到沒有更多的引用。也就是說:$ scope在調用完成之前不能被GCd調用,直到控制器不存在,調用才能被GCd ... – Norguard