angular – 何时在等待观察时关闭离子加载控制器
我想知道如何在等待异步可观察到达时正确使用离子-2加载控制器 – 因为可观察到的可能没有,单个或许多响应的“波”.
第一个问题 – 如何呈现 我应该使用loader.present()或loader.present().然后(…我看到很多代码示例“忽略”加载器的异步性质(我甚至看到了loader.present(//要执行的函数) ) 第二个问题 – 什么时候解雇 如上所述,来自订阅的响应可以到达未知的响应“波浪” – 考虑到它,何时应该解除加载器?如果没有回复怎么办?如果有几个回复怎么办? let loader = this.loadingController.create({content : "something"}) loader.present().then(()=>{ source.subscribe((school)=>{ this.schools.push(school) loader.dismiss() },err=> loader.dismiss() ) }) 第三个问题 – 如何解雇 我注意到解决加载控制器(例如Ionic 2 – Loading Controller doesn’t work)存在很多问题.解雇后赶上是不够的??如果在加载后我想要推送到另一个页面怎么办…? 感谢您的耐心等待. 解决方法
呈现加载器的正确方法是使用then,因为否则你可能会遇到一些与错误动画相关的问题,也可能是其他一些奇怪的问题.毕竟,如果方法返回一个promise,那么使用它的正确方法将永远是在promise完成时做其他事情. loader.present().then(() => { /* ... */ }); 当我需要解除加载时,我也会这样做: loading.dismiss().then(() => { /* ... */ });
如果使用加载的想法是让用户知道背景中发生了某些事情,所以我认为你应该在第一次浪潮之后解除加载. 如果没有响应到达(例如结果为空),则可以包含* ngIf =“result.items.length === 0”条件,以显示带有消息的div,表明结果为空.如果新波浪到达结果中的某些项目,则该div将自动隐藏.
就像现在的方法一样,解雇也会返回一个承诺.在这种情况下,如果您不使用then,则更容易在动画中看到一些错误的行为.所以再次,只需等待结束方法(通过使用then),您可以推送新页面或执行您需要做的事情,它应该正常工作: loading.dismiss().then(() => { this.navCtrl.push(NewPage); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |