$.when 行为不同,具体取决于是否将一个或多个 Deferred 对象传递给它。这种行为记录在文档中 - 但问题是它迫使我编写两个不同的代码路径。
function foo (dfds) {
$.when.apply(this, dfds).done(function() {
console.log(arguments);
});
}
案例一:
foo([$.getJSON("http://freegeoip.net/json/8.8.8.8"),
$.getJSON("http://freegeoip.net/json/8.8.8.9")]);
....
/* Output (what I'd come to expect) */
[Array[3], Array[3]]
案例二:
foo([$.getJSON("http://freegeoip.net/json/8.8.8.8")]);
....
/* Output (the original unwrapped deferred's arguments) */
[Object, "success", Object]
有什么方法可以优雅地处理这个问题而无需检查 的长度dfd
或类型arguments
?