gpt4 book ai didi

Javascript缓存http获取结果

转载 作者:行者123 更新时间:2023-11-29 14:45:09 25 4
gpt4 key购买 nike

我正在构建一个网页,在表格中显示数据库中的数据。我想使用 HTTP GET 来获取数据,但我想将其缓存(我说的是客户端 Javascript),这样我就不必为它发送更多请求。

我尝试了一些有 promise 的东西:

var get = function(aUrl) {
return new Promise(function(resolve, reject) {
var anHttpRequest = new XMLHttpRequest();
anHttpRequest.onreadystatechange = function() {
if (anHttpRequest.readyState == 4 && anHttpRequest.status == 200)
resolve(anHttpRequest.responseText);
}

anHttpRequest.open( "GET", aUrl, true );
anHttpRequest.send( null );
})
}

this.getTableData = function() {
get("http://localhost:3000/test")
.then(function(result) {
console.log(result);
})
}

我认为我可以将 promise 的结果存储在某个地方,但我找不到这样做的方法,而且这可能是不可能的。

那么,让我总结一下:我怎样才能只使用一次 HTTP GET 并存储数据以供日后重用?

最佳答案

像这样

var get = (function() {
var promises = {};
return function(aUrl, forceReload) {
if (!promises[aUrl] || forceReload) {
promises[aUrl] = new Promise(function(resolve, reject) {
// your code is unchanged in here
});
}
return promises[aUrl];
}
}());

这将返回一个新的 Promise,或者之前为同一 url 创建的 Promise ... 添加了一个 forceReload 参数,因为当我使用这样的函数时,有正当理由逻辑

我建议您在适当的时候拒绝 promise ,否则您将只有一个永久未决的 promise ,但您最终应该能够确定存在错误或非 200 响应 - 因此在这种情况下拒绝 promise .但这只是对合理代码的建议

关于Javascript缓存http获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33849784/

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