我有一个应用程序,需要按照一定的顺序加载数据:根URL,然后是模式,然后用各种数据对象的模式和URL来初始化应用程序。 当用户导航应用程序时,数据对象被加载,根据模式进行validation并显示。 当用户CRUD数据时,模式提供首过validation。 我在初始化时遇到问题。 我使用Ajax调用获取根对象$ .when(),然后创build一个承诺数组,每个模式对象一个。 这样可行。 我在控制台中看到提取。 然后我看到所有模式的提取,所以每个$ .ajax()调用的作品。 fetchschemas()的确会返回一个promise数组。 但是,最后when()子句永不会触发,单词“DONE”永远不会出现在控制台上。 jquery-1.5的源代码似乎意味着可以将“null”作为传递给$ .when.apply()的对象来接受,因为when()将构build一个内部的Deferred()对象来pipe理列表,如果没有对象通过了。 这工作使用Futures.js。 如何pipe理jQuery Deferreds数组?如果不是这样? var fetch_schemas, fetch_root; fetch_schemas = function(schema_urls) { var fetch_one = function(url) { return $.ajax({ url: url, data: {}, contentType: "application/json; charset=utf-8", dataType: "json" }); }; return $.map(schema_urls, fetch_one); }; fetch_root = function() { return $.ajax({ url: BASE_URL, data: […]