gpt4 book ai didi

javascript - Dojo 内存存储定期刷新

转载 作者:行者123 更新时间:2023-12-03 10:22:55 26 4
gpt4 key购买 nike

我有一个 dojo 方法来创建 xhrRequest 以从数据库获取最新的项目列表,并且我使用 setInterval() 定期执行此操作。有没有其他更好的方法,无需使用 setInterval() ,只要将新项目添加到数据库中,就会自动更新内存存储?..当前代码如下

<div data-dojo-type="dojo/store/Memory"
data-dojo-id="dataStore">
<script type="dojo/method">
var myStore = this;
setInterval(function(){
require(["dojo/request/xhr"], function(xhr){
xhr("myurl", {
handleAs: "json"
}).then(function(data){
if (data && data.length > 0) {
myStore.setData(data);
}
}, function(err){
// Handle the error condition
}, function(evt){
// Handle a progress event from the request if the
// browser supports XHR2
});
});
}, 2000);
</script>
</div>

最佳答案

好吧,您可以使用dojo/store/JsonRest来代替dojo/store/Memory。如果您确实需要最新的信息,那么您可能应该在每次想要获取数据时调用“myurl”,这样您就不必轮询服务器以获取更改。

如果您没有 RESTful API,并且不愿意实现自己的 dojo/store 商店(这也有可能),那么您可能需要看看到 WebSocket 中。

您的方法的问题在于它非常消耗网络(当然,如果有很多客户端)。如果服务器可以向客户端推送消息,表明数据库已更改并且他们必须更改其存储,那就更有意义了。

这与 Meteor 等平台的工作方式类似,它们使用 WebSocket 将服务器端数据库(部分)同步到客户端存储。

但是,并非所有浏览器都支持 WebSockets ( caniuse.com ),但大多数框架都提供可以使用相同后备(例如长轮询)的服务器+客户端组件。

看看Real-time Stores文章,其中对其进行了更详细的解释。

关于javascript - Dojo 内存存储定期刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29546010/

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