gpt4 book ai didi

javascript - 如何从延迟对象返回函数

转载 作者:行者123 更新时间:2023-11-30 17:30:00 27 4
gpt4 key购买 nike

<分区>

我有一个函数,它传递一个 URL 列表(在本例中是一个 json 文件列表),它对每个资源进行异步 ajax 调用,一旦完成,就会返回一个包含内容的对象。

function loadModels(modelList){
var modelObject = {}

for(model in modelList){
var urlPath = modelList[model].indexOf(".json") > -1 ? 'model/'+modelList[model]+'json' : 'model/'+modelList[model]+'.json';
$.ajax(urlPath).done(function(jsonData){
modelObject[modelList[model]] = jsonData;
});
}

console.log(modelObject);
return modelObject;
}

问题是,控制台总是记录 Object{} 因为函数在延迟对象解析之前返回。如果我设置 async: false 那么它工作得很好,但我不希望请求相互等待。

如何强制函数在返回之前等待并仍然异步调用?

编辑:链接中的延迟解决方案不是一个足够完整的答案。我遇到的问题与关闭有关。这是工作代码块:

function loadModels(modelList, callback){
var promises = [];

for(model in modelList){
(function(){
var currentModel = modelList[model];
var urlPath = currentModel.indexOf(".json") > -1 ? 'model/'+currentModel+'json' : 'model/'+currentModel+'.json';
var promise = $.ajax(urlPath);
log('pulling model: ' + currentModel);
promise.done(function(jsonData){
modelObject[currentModel] = jsonData;
log('model pulled: ' + currentModel);
});
promises.push(promise);
})();
}

$.when.apply(null, promises).done(function() {
callback(modelObject);
});
}

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