jquery - $.when() 带有单个延迟和延迟数组

jquery - $.when() with single deferred and array of deferred

我正在使用 jquery 并且有两个变量。

trackFeatures - 单个 ajax 请求,artistRequests - ajax 请求数组

我想在 trackFeatures 和 artistRequests 都完成后做点什么。对于 artistRequests,我可以这样做:

$.when.apply($, artistRequests).done(function() { ... }

有没有办法将单个请求与数组请求结合起来?除了将单个请求添加到数组或按顺序测试它们。

谢谢

参考此 link 和示例:

var d1 = $.Deferred();
var d2 = $.Deferred();
 
$.when( d1, d2 ).done(function ( v1, v2 ) {
    console.log( v1 ); // "Fish"
    console.log( v2 ); // "Pizza"
});
 
d1.resolve( "Fish" );
d2.resolve( "Pizza" );

同样,如果你有像 artistRequests = [d1,d2]

这样的承诺数组

您可以像

这样对数组使用扩展运算符

$.when(trackFeatures , ...artistRequests ).done(function ( v1, v2 ) {
    console.log( v1 ); // "Fish"
    console.log( v2 ); // "Pizza"
});

PS: ...artistRequests 将数组的每个值拆分为单个变量。