Ionic 按下后退按钮时,离子应用程序挂起代码执行

vh0rcniy  于 2023-08-01  发布在  Ionic
关注(0)|答案(2)|浏览(139)

我有一个应用程序使用离子+React与一个页面,用户可以上传一个图像从相机或画廊在该页面,我保存imagem作为二进制数据库( IndexedDB 使用德克斯)到目前为止,一切都很好,如预期的那样,但当用户按下后退按钮后,图像选择和数据库保存代码没有完成发生的保存从未发生.
问题1:这是正常的行为吗?正在运行的代码在按下后退按钮时挂起执行?
问题2:我可以做些什么来让代码无论如何都能执行,并解决我的问题?
要添加一些代码:
该按钮只是调用一个commit函数,该函数在内部调用该函数:

const saveImageOffline = async (uuid: string, form: FormData) => {
  const qtd: number = await dbGetTable('storedImages').where({ id: uuid }).count();
  if (qtd > 0) {
    await dbGetTable('storedImages').update(uuid, {
      id: uuid,
      content: form.get('image'),
    });
  } else {
    await dbGetTable('storedImages').put({
      id: uuid,
      content: form.get('image'),
    });
  }
};

字符串

vkc1a9a2

vkc1a9a21#

您可以编辑按下后退按钮的功能以避免此问题-请参阅:
How to override ion-back-button action in ionic 4 with angular 7
行为是否正常取决于您的代码。基本上,后退按钮想要撤销所有操作,例如进入应用程序的另一个视图。老实说,如果代码干净,数据库函数将不会被逆转。它们被保存在那里,应用程序不知道如何删除查询。
编辑:好吧,这种行为在我看来很正常。当用户取消操作时,执行将停止,因此不进行保存。基本上你上传一张图片到数据库。如果取消上载,则图像永远不会完全上载。
我不知道在这种情况下你能不能做点什么让它一直通过。你需要上传照片,这需要时间。如果用户取消该操作,则不会上传照片-并且在这种情况下不会上传个人资料图片。不过可能有人比我更了解

4bbkushb

4bbkushb2#

我不知道这是否是最好的方法,但我添加了一个函数,该函数在全局上下文中调用一个函数,然后通过这个上下文函数进行保存,现在它可以工作了。
就目前而言,这是解决方案,如果有人有更好的,我真的很喜欢听。

相关问题