gpt4 book ai didi

javascript - 在 localStorage 中存储变量太慢

转载 作者:太空狗 更新时间:2023-10-29 14:47:20 26 4
gpt4 key购买 nike

我有两个 jQuery 移动页面(#list 和 #show)。 #list 页面上有几项具有不同的 ID。如果我点击第 5 项,ID 5 将存储在 localStorage 中,我将被重定向到页面 #show

现在的问题是:将 ID 存储在 localStorage 中是可行的,但下一页显示的不是项目 5,而是显示一个旧项目,它之前在 localStorage 中。

来自页面 #list 的脚本

localStorage.setItem("garageID", $(this).attr('id'));                           
window.location.replace("#show");

最佳答案

我也遇到过这个问题(不是在移动设备上:在 Chromium/linux 上)。

由于似乎没有基于回调的 API,我用超时“修复”了它,“防止”页面在 setItem 操作完成之前关闭:

localStorage.setItem(name, value);                           
setTimeout(function(){
// change location
}, 50);

0 的超时可能就足够了,但由于我没有找到任何规范(它可能在错误领域)并且问题没有始终如一地重现,所以我没有捕获任何机会.如果你愿意,你可以在一个循环中测试:

function setLocalStorageAndLeave(name, value, newLocation){
value = value.toString(); // to prevent infinite loops
localStorage.setItem(name, value);
(function one(){
if (localStorage.getItem(name) === value) {
window.location = newLocation;
} else {
setTimeout(one, 30);
}
})();
}

但我不知道 localStorage.getItem 返回正确值的事实如何保证它真正以永久方式写入,因为没有可中断行为的规范,我不知道如果the following part of the spec可以合法地解释为允许浏览器在离开页面时忘记转储到磁盘上:

This specification does not require that the above methods wait until the data has been physically written to disk. Only consistency in what different scripts accessing the same underlying list of key/value pairs see is required.

在您的确切情况下,解决方案可能是简单地滚动到具有给定名称的元素以避免更改页面。

关于假定错误的注释:

我没有找到也没有填写任何错误报告,因为我发现它很难重现。在我观察到的 Chromium/linux 案例中,它发生在 delete 操作中。

关于javascript - 在 localStorage 中存储变量太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com