nov*_*ain 3 javascript local-storage
如果我使用删除项目localStorage.removeItem("key");,有什么方法可以检查删除是否成功?诸如回调或承诺之类的东西?
现在我这样做:
if(localStorage.getItem("key"))
localStorage.removeItem("key");
else
console.log("Error");
Run Code Online (Sandbox Code Playgroud)
这是正确的方法还是可以以“更好”的方式完成?
该removeItem()电话不返回任何失败的指示1的任何种类(摘自摘录最近编辑的W3C的存储规范的草案,与我的重点):
该
removeItem(key)方法必须使具有给定键的键/值对从与对象关联的列表中删除(如果存在)。如果不存在具有该键的项,则该方法不得执行任何操作。
因此,判断密钥是否是实际删除的唯一方法(与上面第二句中的“什么都不做”操作相反)是先检查它。
您几乎肯定应该getItem()针对null(===当然)使用显式检查返回值,但这不会改变您无法检测removeItem()自身失败的事实1。
当然,如果您担心用这些代码片段填充您的代码,您完全可以定义一个函数来为您完成繁重的工作,例如:
function removeExistingItem(key) {
if (localStorage.getItem(key) === null)
return false;
localStorage.removeItem(key);
return true;
}
Run Code Online (Sandbox Code Playgroud)
然后用更简洁的方式调用它:
if (! removeExistingItem("key"))
console.log("Error");
Run Code Online (Sandbox Code Playgroud)
1这是基于“失败”被定义为不存在的关键(这似乎是您在问题中使用的定义)。实际上,不能仅仅因为它在项目不存在的情况下什么都不做removeItem() 而失败(见上面的插图)。