gpt4 book ai didi

javascript - 对象返回需要等到 JSON 请求结束

转载 作者:行者123 更新时间:2023-11-30 06:08:53 25 4
gpt4 key购买 nike

这里是 get.json 的内容:

{ "id": 1, "name": "你好"}

和脚本/标记:

var 条目 = [];

       function Data(){}
Data.prototype.get = function(id){
var object = {}, length = entries.length, success = false;
for (var i = 0; i < length; i++) {
if (entries[i].id == id) {
object = entries[i];
i = length;
console.log("From browser: " + object.name);
success = true;
}
}
if (!success) {
$.getJSON("get.json", function(data){
entries.push(data);
object = data;
console.log("Newly fetched: " + object.name);
});
}
return object;
}

$(function(){
var data = new Data();
data.get(1);
console.log((data.get(1).name);
});

最佳答案

我会使用回调。如果数据存在于浏览器缓存中,将立即触发回调。如果没有,它将在异步请求完成时触发。

function Data(){}
Data.prototype.get = function(id, callback){
var object = {}, length = entries.length, false;
for (var i = 0; i < length; i++) {
if (entries[i].id == id) {
object = entries[i];
console.log("From browser: " + object.name);
callback(object);
return; // Don't let execution continue
}
}

$.getJSON("get.json", function(data){
entries.push(data);
object = data;
console.log("Newly fetched: " + object.name);
callback(object);
});
}

$(function(){
var data = new Data();
data.get(1, function(obj){
console.log(obj.name);
});
});

另一种方法是使您的 AJAX 调用同步,这会暂停所有执行,但这是一个非常坏主意

编辑:我还稍微更改了您的代码以删除 success 变量,并选择直接从 for 循环返回(从而打破循环)。

关于javascript - 对象返回需要等到 JSON 请求结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781107/

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