Javascript 通过promise创建和执行多个Ajax请求
我试图在何时执行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); } }); }
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) });