Javascript 同步处理多个ajax请求
我有一个带有标签和URL的对象,我想将其扩展为具有相同键的对象,但将URL替换为通过ajax调用获得的实际内容,例如:Javascript 同步处理多个ajax请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个带有标签和URL的对象,我想将其扩展为具有相同键的对象,但将URL替换为通过ajax调用获得的实际内容,例如: var requests = { foo: 'http://url1.com', bar: null, baz: 'http://url2.com' } 会扩展到像这样的对象 { foo: 'content 1', baz: 'content 2' } 单个项可以按任何顺序展开,但显然我想跳过对空值的ajax调用。主要的一点是,我还希望有一个回调,该回调
var requests = {
foo: 'http://url1.com',
bar: null,
baz: 'http://url2.com'
}
会扩展到像这样的对象
{
foo: 'content 1',
baz: 'content 2'
}
单个项可以按任何顺序展开,但显然我想跳过对空值的ajax调用。主要的一点是,我还希望有一个回调,该回调将在对象完全展开后调用
我想知道jQuery中最优雅、最简单的解决方案是什么
谢谢 对于ajax调用,您可能会使用jQuery的when和then函数 请注意,这仍然是异步的。同步请求将锁定浏览器,直到完成。因此,最优雅的解决方案是异步执行,并使用延迟/承诺 var承诺=[]; var结果={} var请求={ 傅:'http://jsonplaceholder.typicode.com/posts/1', bar:null, 巴兹:'http://jsonplaceholder.typicode.com/posts/2' } 函数getDataForKeykey,url{ 返回$.ajax{ url:url, 数据类型:json, 成功:functiondata{ document.writekey+done; 结果[关键]=数据; } }; } 对于var键入请求{ 如果!请求[键]继续; promises.pushgetDataForKeykey,请求[key]; } //将每个承诺作为参数应用于jQuery的when函数 $.when.applythis,promises.then函数{ //这里一切都结束了。 document.writeall done!; 文件。书写; };