等待可观察对象时何时关闭离子加载控制器
When to dismiss the ionic loading controller while waiting for an observable
我想知道如何在等待异步 observable 到达时正确使用 ionic-2 加载控制器 - 因为 observable 可能会到达 none,单个或多个 "waves" 响应。
第一个问题-如何呈现
我应该使用 loader.present()
还是 loader.present().then(..
。我看到很多代码示例 "ignore" 加载程序的异步性质(我什至看到 loader.present(//function to execute)
第二个问题-什么时候解雇
如前所述,来自订阅的响应可能会收到未知的 "waves" 响应 - 考虑到这一点,我应该何时关闭加载程序?如果没有回应怎么办?如果有几个回应怎么办?
例如:
let loader = this.loadingController.create({content : "something"})
loader.present().then(()=>{
source.subscribe((school)=>{
this.schools.push(school)
loader.dismiss()
}, err=> loader.dismiss()
)
})
第三题-如何解雇
我注意到有很多关于关闭加载控制器的问题(例如 )。解雇后赶上就够了..?载入后想跳转到另一个页面怎么办...?
感谢您的耐心等待。
first question - how to present?
呈现加载程序的正确方法是使用 then
,否则您可能会遇到一些与错误动画相关的问题,也可能会遇到其他一些奇怪的问题。毕竟,如果方法 returns 是一个 promise,正确的使用方法总是在 promise 完成后做其他事情。
loader.present().then(() => { /* ... */ });
当我需要关闭加载时,我也会这样做:
loading.dismiss().then(() => { /* ... */ });
second question - when to dismiss?
使用加载的想法是让用户知道后台正在发生某些事情,因此我认为您应该在 第一波 之后关闭加载。
如果没有响应(例如结果为空),您可以包含一个 *ngIf="result.items.length === 0"
条件以显示 div 并显示一条消息,说明结果为空。如果新的 wave 到达时结果中包含某些项目,则 div 将自动隐藏。
third question - how to dismiss?
就像 present
方法一样,dismiss
也是 returns 一个承诺。在这种情况下,如果不使用 then
,则更容易在动画中看到一些错误行为。因此,再次等待 dismiss 方法结束(通过使用 then
),您可以推送一个新页面或做您需要做的事情,它应该可以正常工作:
loading.dismiss().then(() => { this.navCtrl.push(NewPage); });
我想知道如何在等待异步 observable 到达时正确使用 ionic-2 加载控制器 - 因为 observable 可能会到达 none,单个或多个 "waves" 响应。
第一个问题-如何呈现
我应该使用 loader.present()
还是 loader.present().then(..
。我看到很多代码示例 "ignore" 加载程序的异步性质(我什至看到 loader.present(//function to execute)
第二个问题-什么时候解雇
如前所述,来自订阅的响应可能会收到未知的 "waves" 响应 - 考虑到这一点,我应该何时关闭加载程序?如果没有回应怎么办?如果有几个回应怎么办? 例如:
let loader = this.loadingController.create({content : "something"})
loader.present().then(()=>{
source.subscribe((school)=>{
this.schools.push(school)
loader.dismiss()
}, err=> loader.dismiss()
)
})
第三题-如何解雇
我注意到有很多关于关闭加载控制器的问题(例如
感谢您的耐心等待。
first question - how to present?
呈现加载程序的正确方法是使用 then
,否则您可能会遇到一些与错误动画相关的问题,也可能会遇到其他一些奇怪的问题。毕竟,如果方法 returns 是一个 promise,正确的使用方法总是在 promise 完成后做其他事情。
loader.present().then(() => { /* ... */ });
当我需要关闭加载时,我也会这样做:
loading.dismiss().then(() => { /* ... */ });
second question - when to dismiss?
使用加载的想法是让用户知道后台正在发生某些事情,因此我认为您应该在 第一波 之后关闭加载。
如果没有响应(例如结果为空),您可以包含一个 *ngIf="result.items.length === 0"
条件以显示 div 并显示一条消息,说明结果为空。如果新的 wave 到达时结果中包含某些项目,则 div 将自动隐藏。
third question - how to dismiss?
就像 present
方法一样,dismiss
也是 returns 一个承诺。在这种情况下,如果不使用 then
,则更容易在动画中看到一些错误行为。因此,再次等待 dismiss 方法结束(通过使用 then
),您可以推送一个新页面或做您需要做的事情,它应该可以正常工作:
loading.dismiss().then(() => { this.navCtrl.push(NewPage); });