Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同步处理多个ajax请求_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 同步处理多个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调用。主要的一点是,我还希望有一个回调,该回调

我有一个带有标签和URL的对象,我想将其扩展为具有相同键的对象,但将URL替换为通过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!; 文件。书写; };