簡體   English   中英

何時在等待觀察時關閉離子加載控制器

[英]When to dismiss the ionic loading controller while waiting for an observable

我想知道如何在等待異步可觀察到達時正確使用離子-2加載控制器 - 因為可觀察到的可能沒有,單個或許多響應的“波”。

第一個問題 - 如何呈現

我應該使用loader.present()loader.present().then(..我看到很多代碼示例“忽略”加載器的異步性質(我甚至看到了loader.present(//function to execute)

第二個問題 - 什么時候解雇

如上所述,來自訂閱的響應可以到達未知的響應“波浪” - 考慮到它,何時應該解除加載器? 如果沒有回復怎么辦? 如果有幾個回復怎么辦? 例如:

let loader = this.loadingController.create({content : "something"})
loader.present().then(()=>{
    source.subscribe((school)=>{
        this.schools.push(school)
        loader.dismiss()
        }, err=> loader.dismiss()
    )
 })

第三個問題 - 如何解雇

我注意到解決加載控制器存在很多問題(例如, 離子2 - 加載控制器不起作用 )。 解雇后趕上是不夠的?? 如果在加載后我想要推送到另一個頁面怎么辦...?

感謝您的耐心等待。

第一個問題 - 如何呈現?

呈現加載器的正確方法是使用then ,因為否則你可能會遇到一些與錯誤動畫相關的問題,也可能是其他一些奇怪的問題。 畢竟,如果方法返回一個promise,那么使用它的正確方法將永遠是在promise完成時做其他事情。

loader.present().then(() => { /* ... */ });

當我需要解除加載時,我也會這樣做:

loading.dismiss().then(() => { /* ... */ });

第二個問題 - 什么時候解雇?

如果使用加載的想法是讓用戶知道背景中發生了某些事情,所以我認為你應該在第一次浪潮之后解除加載。

如果沒有響應到達(例如結果為空),則可以包含*ngIf="result.items.length === 0"條件,以顯示帶有消息的div,表明結果為空。 如果新波浪到達結果中的某些項目,則該div將自動隱藏。

第三個問題 - 如何解雇?

就像present方法一樣, dismiss也會返回一個承諾。 在這種情況下,如果您不使用then則更容易在動畫中看到一些錯誤的行為。 所以再次,只需等待結束方法(通過使用then ),您可以推送新頁面或執行您需要做的事情,它應該正常工作:

loading.dismiss().then(() => { this.navCtrl.push(NewPage); });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM