Javascript 通过promise创建和执行多个Ajax请求

Javascript 通过promise创建和执行多个Ajax请求,javascript,jquery,ajax,get,Javascript,Jquery,Ajax,Get,我试图在何时执行Ajax请求并在执行后操纵数据时使用$。以下是我到目前为止的代码: function method2 (data2) { return $.ajax({ type: 'GET', url: 'Some URL', dataType: 'jsonp', success: function(data2){ console.log(data2); } }); }

我试图在何时执行Ajax请求并在执行后操纵数据时使用$。以下是我到目前为止的代码:

function method2 (data2) {
    return $.ajax({
        type: 'GET',
        url: 'Some URL',
        dataType: 'jsonp',
        success: function(data2){
            console.log(data2);
        }

    });
}

function method3 (){
    return $.ajax({
        type: 'GET',
        url: 'Some URL',
        dataType: 'jsonp',
        success: function(data3){
            console.log(data3);
        }
    });
}


function method4(){
    return $.ajax({
        type: 'GET',
        url: 'Some URL',
        dataType: 'jsonp',
        success: function(data4){
            console.log(data4);
        }
    });
}


function method5(){
    return $.ajax({
        type: 'GET',
        url: 'Some URL',
        dataType: 'jsonp',
        success: function(data5){
            console.log(data5);
        }
    });
}

function method6(){
    return $.ajax({
        type: 'GET',
        url: 'Some URL',
        dataType: 'jsonp',
        success: function(data6){
            console.log(data6); 
        }
    });
}



// Execute all needed data from all of the requests.
function showData(){

}

$.when( method1(), method2(), method3(), method4(), method5(), method6() ).then( showData() );
所以我想在我的HTML页面上显示这些Ajax get请求的数据,我想执行函数showData()中的所有代码,但问题是当我试图在showData()中控制台.log()方法时,我无法访问这些方法,我想知道如何访问它们?有什么解决方案或想法吗?

函数showData(){
function showData(){
var array = ['url1', 'url2', 'url3', 'url4', 'url5', 'url6'];
for (var i = 0; i < array.length; i++) {
      $.ajax({
        type: 'GET',
        url: array[i],
        dataType: 'jsonp',
        success: function(data){
        console.log(data)
    }
});
}
}
showData();
变量数组=['url1','url2','url3','url4','url5','url6']; 对于(var i=0;i
尝试曹兰/异步库中的系列:

仅需稍加修改即可从中删除:

function method2() {
  var d = $.Deferred();
  $.ajax({
    type: 'GET',
    url: 'Some URL',
    dataType: 'jsonp',
    success: function(data2) {
      d.resolve(data2);
    }
  });
  return d.promise();
}

function method3() {
  var d = $.Deferred();
  $.ajax({
    type: 'GET',
    url: 'Some URL',
    dataType: 'jsonp',
    success: function(data3) {
      d.resolve(data3);
    }
  });
  return d.promise();
}

// Execute all needed data from all of the requests.
function showData(v2, v3) {
  console.log(v2);
  console.log(v3);
}

$.when(method2(), method3()).done(function(v2, v3) { showData(v2, v3) });

阅读文档并查看示例:要获得完全相同的结果,不需要单独的库(除了jQuery),这不是divkiller所要求的。只需阅读的文档,它应该是显而易见的。我已经检查了文档和您的解释,但当我尝试console.log(v2)时;例如,在函数showData(v2){…}内,我接收到未捕获的引用错误:v2未定义,我无法输出所需的数据to@divkiller您不需要在此处使用
$。延迟
(并自行处理解析)。只要做
返回$.ajax(…)
就行了。
$.ajax()
已经返回了一个
承诺:@Andreas我将尝试两种方法,但是是的,谢谢你的帮助和快速建议:)非常感谢你的时间!
function method2() {
  var d = $.Deferred();
  $.ajax({
    type: 'GET',
    url: 'Some URL',
    dataType: 'jsonp',
    success: function(data2) {
      d.resolve(data2);
    }
  });
  return d.promise();
}

function method3() {
  var d = $.Deferred();
  $.ajax({
    type: 'GET',
    url: 'Some URL',
    dataType: 'jsonp',
    success: function(data3) {
      d.resolve(data3);
    }
  });
  return d.promise();
}

// Execute all needed data from all of the requests.
function showData(v2, v3) {
  console.log(v2);
  console.log(v3);
}

$.when(method2(), method3()).done(function(v2, v3) { showData(v2, v3) });