gpt4 book ai didi

javascript - 如何重用从API获取的数据?

转载 作者:太空宇宙 更新时间:2023-11-04 15:54:55 25 4
gpt4 key购买 nike

我正在从返回 JSON 对象的 API 获取数据:

fetch("api.php")
.then(function(response) {
console.log("Status: " + response.status);
if (response.ok) {
return response.json();
} else {
throw Error(response.status);
}
}).then(function(json) {
json.forEach(function(item) {

// 'datas' contains the items extracted from the JSON response
datas.add(item);


});
}).catch(function(err) {
console.log(error);
});

如果我想用jinqJs查询数据我可以将代码稍微更改为:

}).then(function(json) {
var result = new jinqJs()
.from(json)
.where('start_date = 2017-03-10')
.select();

result.forEach(function(item) {

datas.add(item);

});
}).catch(function(err) {

而且效果非常好。

我的问题是:由于仅获取一次 API,我实际上下载了所有需要的数据,因此我如何在 forEach fetch 的“外部”查询它?我的意思是:我通过一次 API 调用就已经拥有了所有数据,我可以轻松地使用 jinqJs 对数据进行查询,为什么我每次需要查询时都应该调用 API?一旦 forEach 添加了所有项目,是否可以查询 datas

例如,在 forEach 之外(注意 .from(datas) 而不是 .from(json)),我可以这样做:

var result = new jinqJs()
.from(datas)
.where('start_date = 2017-03-10')
.select();

并获得相同的结果

当我尝试构建一个移动应用程序时,这会很方便,因为我会将上述代码绑定(bind)到特定按钮并相应地查询数据,并且我只会在应用程序第一次启动时连接到互联网,而不是每次需要查询时。

最佳答案

将“JSON” promise 分配给变量

var something = fetch("api.php")
.then(function(response) {
console.log("Status: " + response.status);
if (response.ok) {
return response.json();
} else {
throw Error(response.status);
}
});

现在您可以根据需要多次使用某项

something
.then(json => console.log(json))
.catch ...

something.then(json => new jinqJs()
.from(json)
.where('start_date = 2017-03-10')
.select()
.forEach(function(item) {
datas.add(item);
});
).catch ....

关于javascript - 如何重用从API获取的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42785539/

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