我有一个我正在打电话的功能。叫做getStatus()。但是这个函数需要有一个可能存在的已定义的SessionStorage变量。如果变量存在,那么我想继续执行getJob()函数。如果它不存在,我想尝试定义SessionStorage变量,然后执行getJob()函数。
像这样:
function getStatus()
{
if (sessionGet("jwt") != null)
{
getJob(document.getElementById('job').value, document.getElementById('id').value);
}
else
{
var myValue = '{{ myValue }}';
console.log("Token is missing, acquiring another one!");
var nextToken = setTimeout(function(){ getSessionToken(myValue); }, 5000);
console.log("Reissued token issued is");
console.log(nextToken);
getJob(document.getElementById('job').value, document.getElementById('id').value);
}
}
这是读取SessionStorage变量的函数:
function sessionGet(key) {
let stringValue = window.sessionStorage.getItem(key)
if (stringValue !== null) {
let value = JSON.parse(stringValue)
let expirationDate = new Date(value.expirationDate)
if (expirationDate > new Date()) {
return value.value
} else {
window.sessionStorage.removeItem(key)
}
}
return null
}
当我查看Chrome控制台时,我看到正在编写的SessionStorage变量,但是读取变量的getJob()函数没有看到它。如果我重试,那么getJob()函数就能读取它。我的想法是getJob()函数在写入变量之前触发。这就是我在那里尝试setTimeout()的原因。
有什么建议吗?
答案 0 :(得分:0)
正如ztadic91指出的那样,我需要在getJob()函数调用周围包装setTimeout,因为它需要等待创建SessionStorage变量。做完之后,测试得很好。感谢快速帮助!