我尝试在fetch中更新.then中的IndexedDB数据,但在事件处理程序中不起作用,因为我从这篇文章post-link中了解到这一点。在.then之外更新IndexedDB数据是有效的。所以我创建了一个布尔变量,并尝试在.then中更新它,并考虑在"the之外更新IndexedDB数据,但布尔值在. then中没有得到更新。
.then(() =>{
data_inserted = true ;
})
现在外面的“.then”
console.log(data_inserted); // value is false
if ( data_inserted === true )
{
// update IndexedDB code
}
我看到了这个帖子post-link,我不知道如何做一个回调函数,因为他们对我的代码。
请帮助我更新布尔变量。
先谢谢你。
1条答案
按热度按时间nom7f22z1#
我怀疑这是对异步代码缺乏理解。
异步代码
then
将发生在它后面的代码之后。注意:将输出:
为什么呢?因为then中的代码要等到'someFunctionThatTakesOneSecond”完成并实现了承诺之后才运行。但是async块之后的代码将同步运行(即:立即)。
您可能希望改用async/await模式-
await
停止进一步执行,直到async函数返回。因此:
将输出:
请在此处阅读有关async/await和异步JavaScript的更多信息:https://blog.logrocket.com/understanding-asynchronous-javascript/