在等待可观察到的情况下,何时关闭离子负载控制器



我想知道如何在等待异步可观察到的到达时正确使用ionic-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()
)
})

第三个问题-如何驳回

我注意到有很多关于卸载控制器的问题(例如,Ionic 2-装载控制器不工作)。解雇后接球够了吗。。?如果加载后我想推送到另一个页面该怎么办。。。?

谢谢你的耐心。

第一个问题-如何呈现?

显示加载程序的正确方法是使用then,因为否则您可能会面临一些与有缺陷的动画有关的问题,以及其他一些奇怪的问题。毕竟,如果该方法返回promise,那么正确的使用方法总是在promise完成时执行其他操作。

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

当我需要取消加载时,我也会这样做:

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

第二个问题-何时解雇?

如果使用加载的想法是让用户知道后台发生了什么,所以我认为你应该在第一波之后取消加载。

如果没有响应到达(例如,结果为空),可以包含一个*ngIf="result.items.length === 0"条件来显示一个div,并显示一条消息,说明结果为空。如果一个新的wave到达,结果中包含一些项目,则该div将自动隐藏。

第三个问题-如何驳回?

present方法一样,dismiss也返回promise。在这种情况下,如果不使用then,则更容易在动画中看到一些错误行为。因此,同样,只需等待驳回方法结束(通过使用then),您就可以推送一个新页面或做您需要做的事情,它应该可以正常工作:

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

相关内容

  • 没有找到相关文章

最新更新