我需要打开事务,读取objectstore数据,并检查数据是否未定义,以及数据是否在indexedDB中定义,如果没有,则使用network_ip()函数获取新数据。
但问题是,当我使用承诺,“const r”变量总是未定义的resolve(e.target.result)。
未解析已成功定义**“r”变量,但结果**为空。
const time = new Date().getTime();
async function network_ip(){
let ipaddr = await fetch('https://example.com/ip.php');
ipaddr = await ipaddr.text();
db.transaction(['ip'], 'readwrite').objectStore('ip').put({ip:ipaddr, times:time}, 1);
}
new Promise(function(resolve) {
db.transaction(['ip'], 'readwrite').objectStore('ip').get(1).onsuccess = function(e){
const r = resolve(e.target.result); // this line is not working
if (r !== undefined && r.ip !== undefined && r.times !== undefined) {
t = r.times;
i = r.ip;
}else{
network_ip();
}
}
}).then(function(result){
console.log(result);
});
1条答案
按热度按时间hi3rlvi21#
我认为您希望将
e.target.result
的值赋给r
,并将e.target.result
传递给resolve()
函数。因为
resolve()
没有返回值,所以你的代码不起作用,所以给它的执行赋值是不确定的,但是你需要把它分成两行: