我试图将3种方法加载到IonviewDidenter中,但始终是此之后的第一个方法。CarregacarRinho((不运行。为什么?
ionViewDidEnter() {
this.carregaCarrinho()
.then((data) => {
console.log("ok");
}, (error) => {
this.database.presentToast("Não foi possível carregar o carrinho");
})
this.database.buscaTipoeCliente()
.then((data) => {
this.tipovenda = data[0].tipovenda;
this.cliente = data[0].cliente;
this.codigo = data[0].codigo;
this.database.presentToast(this.tipovenda);
this.database.presentToast(this.cliente);
this.database.presentToast(this.codigo);
}, (error) => {
this.database.presentToast("Não possível carregar Condição de venda, cliente e código");
})
this.database.buscaUsuario()
.then((user) => {
this.usuario = user;
this.database.presentToast(this.usuario);
});
}
这不是使用承诺的最佳方法,然后使用嵌套,因此,如果发生错误,您可以看到它发生在哪里。而且,如果有一天您需要加载某些东西以在同一功能中使用其他方法中使用它,则可能会出现一些并发问题。喜欢这样做:
ionViewDidEnter() {
this.carregaCarrinho()
.then((data) => {
console.log("ok");
this.database.buscaTipoeCliente()
.then((data) => {
this.tipovenda = data[0].tipovenda;
this.cliente = data[0].cliente;
this.codigo = data[0].codigo;
this.database.presentToast(this.tipovenda);
this.database.presentToast(this.cliente);
this.database.presentToast(this.codigo);
this.database.buscaUsuario()
.then((user) => {
this.usuario = user;
this.database.presentToast(this.usuario);
});
}, (error) => {
this.database.presentToast("Não possível carregar Condição de venda, cliente e código");
})
}, (error) => {
this.database.presentToast("Não foi possível carregar o carrinho");
})
}
即使您需要调用函数,即使this.carregaCarrinho()
失败,请致电错误回调。我知道我会更大的代码,但是这将是您查看代码中是否有问题的最佳方法。
只是一个提示:不知道某处是否有加载,但是ionViewDidEnter
仅在视图输入时执行(如名称所述(,让用户等待太多的SE在屏幕上的东西不好。因此,加载或使用ionViewWillEnter()
。
希望这有帮助