Javascript 在ajax调用中,在.done()函数之前使用回调函数

Javascript 在ajax调用中,在.done()函数之前使用回调函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,以下是我试图实现的目标: function loadLotsofSomething() { for (var i=0;i<1000;i++) { results.push(loadOneSomething(i)) } $.when.apply(this,results).done(function() { for (var i = 0; i < arguments.length; i++) { //ge

以下是我试图实现的目标:

function loadLotsofSomething() {
    for (var i=0;i<1000;i++) {
        results.push(loadOneSomething(i))
    }

    $.when.apply(this,results).done(function() {
        for (var i = 0; i < arguments.length; i++) {
            //get doSomehting(data) instead of data here
        }
    }   
}

function loadOneSomething(i) {
    return $.ajax({
        async : true,
        url: url,
        success: function(data){
            return doSomething(data);
        }
    });
}

function doSomething (x) {
    return x;
}
函数loadLotusSofThings(){
对于(var i=0;i您希望使用链接(就像承诺一样)。根本不要使用
success
;而是使用
then
并返回其结果:

function loadOneSomething(i) {
    return $.ajax({
        async : true,
        url: url
    }).then(function(data){
        return doSomething(data);
    });
}
这样,
loadOneSomething
返回的承诺是来自
then
的承诺,而不是来自
$.ajax
,它的解析值是您从
then
返回的承诺

更多:,.

您想使用链接(就像承诺一样)。根本不要使用
success
;而是使用
然后使用
并返回其结果:

function loadOneSomething(i) {
    return $.ajax({
        async : true,
        url: url
    }).then(function(data){
        return doSomething(data);
    });
}
这样,
loadOneSomething
返回的承诺是来自
then
的承诺,而不是来自
$.ajax
,它的解析值是您从
then
返回的承诺


更多:,.

您的
结果
变量定义在哪里?是的,success函数在
$之前执行。当…完成
函数时-您的问题是对success函数缺乏理解,返回了一些东西nothing@empiric这只是一个伪代码,不是真代码deal@JaromandaX无益的评论。请解释那么success函数是如何工作的呢。@Chapo-我会更深入地探讨它,除非下面的答案是posted,您的
结果
变量定义在哪里?是的,success函数在
$之前执行。当…完成
函数时-您的问题是对success函数缺乏理解,返回的东西没有任何意义g@empiric这只是一个伪代码,不是真代码deal@JaromandaX没有帮助的评论。请解释一下成功函数是如何工作的。@Chapo-我会更深入地讨论它,除非下面的答案已经发布了