繁体   English   中英

内部方法完成后如何关闭 LoadingController?

[英]How to dismiss LoadingController once a method inside is complete?

我在下面创建一个LoadingController ,展示它,并执行一些方法:

this.loadingCtrl.create({
      message: 'Sending Message...'
    }).then(loadingEl => {
      loadingEl.present();
      this.conversationsService.addMessageToConversation(this.conversation.id, this.form.value.message);
      this.loadMsg();
      this.form.reset();
    });

一旦addMessageToConversation()成功,我就想dismiss LoadingController。

有人可以告诉我我该怎么做吗?

如果需要,这里是addMessageToConversation()

addMessageToConversation(conversationId: string, message: string) {
    this._conversations.getValue().find(conversation => conversation.id === conversationId)
      .messages.push(
        new Message(
          Math.random().toString(),
          message,
          this.authService.userId,
          new Date(Date.now())
        ));
  }

有两种方法可以做到这一点。

  1. 方法完成后,您可以发出事件。
  2. 您可以从 object 中返回由.find() 方法创建的 Promise。 在您的组件代码中,您可以使用 async/await 或 .then() 调用加载 controller 的 the.dismiss()。

我建议使用方法#2,因为那是“正常的”。 将服务的方法转换为 promise 后,您可以按如下方式调整代码:

 this.loadingCtrl.create({ message: 'Sending Message...' }).then(async loadingEl => { loadingEl.present(); const res = await this.conversationsService.addMessageToConversation(this.conversation.id, this.form.value.message); this.loadMsg(); this.form.reset(); this.loadingCtrl.dismiss() });

  • 注意:这还不完整,所以我无法测试语法错误。 希望你明白这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM