我必須在 angular 中創建一個組件,每小時清理資料庫中的資料(通過服務呼叫)并以 HTML 顯示上次清理時間。幾個問題
- 當我們從一個組件路由到另一個組件時,組件是否會自動銷毀并丟失所有資料?
- 是否可以持久化資料并在將來使用它?
@Component({
selector: 'demo-app',
template:`
<button (click)="clearData()"></button>
<h2>Last synced time: {{ time }}</h2>
`
})
export class AppComponent {
public time;
constructor(private demoService: DemoService) { }
// ----> this should be triggered every hour <----
clearData() {
this.demoService.deleteData()
.subscribe((lastCleanTime) => {this.time = lastCleanTime;});
}
}
uj5u.com熱心網友回復:
我不喜歡通過客戶端這樣做,可以添加一個按鈕來運行它,想象一下這些情況:
- 你有 3 個用戶,所以這個任務每小時運行大約 3 次,更多呢?
- 您沒有用戶,因此任務永遠不會運行。
我更喜歡從服務器端執行此操作,您可以通過 API 更新時間以獲取最新時間,也可以添加WebSocket以使其始終更新。
uj5u.com熱心網友回復:
1 是的,當您從一個組件導航到另一個組件時,組件資料會被洗掉。如果你想在組件被銷毀之前做一些事情,你可以使用組件的 ngOnDestroy Lifecycle 方法。
2 您可以使用該服務在組件之間導航時存盤資料。
uj5u.com熱心網友回復:
好的,不是從用戶那里獲取觸發器,而是每小時在內部運行一次資料庫查詢會更容易如何安排資料庫任務?請參考這個鏈接。
Ans 1. 組件范圍僅在它出現在 DOM 中時才可用,所以是的,一旦超出范圍或 DOM,它將被銷毀。
Ans 2. 您可以使用模型或狀態或區域變數來維護資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/320949.html
標籤:javascript 有角的 计划任务
上一篇:動態設定焦點在墊子按鈕上不作業
下一篇:使用角度排氣貼圖防止多次提交
