我有一个应用程序使用离子+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'),
});
}
};
字符串
2条答案
按热度按时间vkc1a9a21#
您可以编辑按下后退按钮的功能以避免此问题-请参阅:
How to override ion-back-button action in ionic 4 with angular 7
行为是否正常取决于您的代码。基本上,后退按钮想要撤销所有操作,例如进入应用程序的另一个视图。老实说,如果代码干净,数据库函数将不会被逆转。它们被保存在那里,应用程序不知道如何删除查询。
编辑:好吧,这种行为在我看来很正常。当用户取消操作时,执行将停止,因此不进行保存。基本上你上传一张图片到数据库。如果取消上载,则图像永远不会完全上载。
我不知道在这种情况下你能不能做点什么让它一直通过。你需要上传照片,这需要时间。如果用户取消该操作,则不会上传照片-并且在这种情况下不会上传个人资料图片。不过可能有人比我更了解
4bbkushb2#
我不知道这是否是最好的方法,但我添加了一个函数,该函数在全局上下文中调用一个函数,然后通过这个上下文函数进行保存,现在它可以工作了。
就目前而言,这是解决方案,如果有人有更好的,我真的很喜欢听。