jQuery $ .when似乎没有返回结果列表

ter*_*nes 2 jquery deferred

根据$ .when的jQuery文档,它将返回一个新的延迟(实际上是一个promise),在所有延迟(传递给$ .when)解决没有错误的情况下,通过传递的延迟结果列表解析.

因此,您希望$.when($.Deferred().resolve(1), $.Deferred().resolve(2))返回一个将使用列表[1,2]解析的延迟.但事实似乎并非如此.这是一个jsfiddle,其中整个$ .when结果是第一个延迟给$ .when的结果.

我想我一定是误会或做错了什么,但我看不清楚是什么.谢谢你的帮助!

use*_*654 5

当使用$.when完全相同的工作时传递给done处理程序的$.when参数,你传入的每个promise/deferred对象得到一个参数.

http://jsfiddle.net/Dx3Jd/4/

$(function () {
    make = function (x) {
        return $.Deferred().resolve(x);
    };

    $.when(make(15), make(16), make(17)).done(
        function (result1, result2, result3) {
            $('#hey').text(result1 + "-" + result2 + "-" + result3); // "15-16-17"
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

如果传入3个参数$.when,则生成的promise对象的.done方法将接收3个参数.