Javascript 在循环结束时解析延迟

Javascript 在循环结束时解析延迟,javascript,jquery,Javascript,Jquery,我在一个循环中有一个异步调用,我希望在解决了所有延迟之后解决整个函数 var deferred = JQuery.Dferred(); for (var x in array){ async(x).then(function(result){ console.log(result); }) } deferred.promise(); 我的问题是:当循环完成时,我如何进行deferred.resolve()?使用when和一系列承诺: function waitFo

我在一个循环中有一个异步调用,我希望在解决了所有延迟之后解决整个函数

var deferred = JQuery.Dferred();
for (var x in array){
    async(x).then(function(result){
       console.log(result);
    })
}
deferred.promise();

我的问题是:当循环完成时,我如何进行deferred.resolve()?

使用
when
和一系列承诺:

function waitForAll(array) {
    var promises = [];
    for (var x in array){
        promises.push(async(x).then(function(result){
           console.log(result);
           return result; // don't forget to propagate the result
        }));
    }
    return jQuery.when.apply(null, promises);
}
使用神奇变量
参数
获取结果

waitForAll(array).then(function () {
    var result = arguments;
    for (var index in array) {
        console.log(result[index]);
    }
}

jQuery的Promise库充其量也很混乱(我相信他们有自己的理由)。如果您想了解有关承诺的更多信息,请查看承诺/A+标准。

在使用承诺数组时使用

function waitForAll(array) {
    var promises = [];
    for (var x in array){
        promises.push(async(x).then(function(result){
           console.log(result);
           return result; // don't forget to propagate the result
        }));
    }
    return jQuery.when.apply(null, promises);
}
使用神奇变量
参数
获取结果

waitForAll(array).then(function () {
    var result = arguments;
    for (var index in array) {
        console.log(result[index]);
    }
}

jQuery的Promise库充其量也很混乱(我相信他们有自己的理由)。如果您想了解有关承诺的更多信息,请查看承诺/A+标准。

在使用承诺数组时使用

function waitForAll(array) {
    var promises = [];
    for (var x in array){
        promises.push(async(x).then(function(result){
           console.log(result);
           return result; // don't forget to propagate the result
        }));
    }
    return jQuery.when.apply(null, promises);
}
使用神奇变量
参数
获取结果

waitForAll(array).then(function () {
    var result = arguments;
    for (var index in array) {
        console.log(result[index]);
    }
}

jQuery的Promise库充其量也很混乱(我相信他们有自己的理由)。如果您想了解有关承诺的更多信息,请查看承诺/A+标准。

在使用承诺数组时使用

function waitForAll(array) {
    var promises = [];
    for (var x in array){
        promises.push(async(x).then(function(result){
           console.log(result);
           return result; // don't forget to propagate the result
        }));
    }
    return jQuery.when.apply(null, promises);
}
使用神奇变量
参数
获取结果

waitForAll(array).then(function () {
    var result = arguments;
    for (var index in array) {
        console.log(result[index]);
    }
}

jQuery的Promise库充其量也很混乱(我相信他们有自己的理由)。如果您想了解更多关于承诺的信息,请查看承诺/A+标准。

请尝试

var deferred = $.Deferred();
for (var x in array){
    async(x).then(function(result){
       console.log(result);
       deferred.resolve(result);

    })
}
return deferred.promise();

你能试试

var deferred = $.Deferred();
for (var x in array){
    async(x).then(function(result){
       console.log(result);
       deferred.resolve(result);

    })
}
return deferred.promise();

你能试试

var deferred = $.Deferred();
for (var x in array){
    async(x).then(function(result){
       console.log(result);
       deferred.resolve(result);

    })
}
return deferred.promise();

你能试试

var deferred = $.Deferred();
for (var x in array){
    async(x).then(function(result){
       console.log(result);
       deferred.resolve(result);

    })
}
return deferred.promise();

非常感谢@Frits!当所有承诺都已解决时,是否可以返回数据?是的,请参阅我的更新答案。确保在
中传播结果,然后
尽管如此+1,但完全公平地说,新的jQuery是标准的,与其他实现(如bluebird)相比,它们非常糟糕。非常感谢@Frits!当所有承诺都已解决时,是否可以返回数据?是的,请参阅我的更新答案。确保在
中传播结果,然后
尽管如此+1,但完全公平地说,新的jQuery是标准的,与其他实现(如bluebird)相比,它们非常糟糕。非常感谢@Frits!当所有承诺都已解决时,是否可以返回数据?是的,请参阅我的更新答案。确保在
中传播结果,然后
尽管如此+1,但完全公平地说,新的jQuery是标准的,与其他实现(如bluebird)相比,它们非常糟糕。非常感谢@Frits!当所有承诺都已解决时,是否可以返回数据?是的,请参阅我的更新答案。确保在
中传播结果,然后
尽管如此+1,但公平地说,新的jQuery是标准的,与其他实现(如bluebird)相比,它们非常糟糕。我认为它将在第一个异步调用结束时解决,而不是在循环结束时。我认为它将在第一个异步调用结束时解决,不是在循环结束时。我认为它将在第一个异步调用结束时得到解决,而不是在循环结束时。我认为它将在第一个异步调用结束时得到解决,而不是在循环结束时。