星期三 , 22 1 月 2025

用jquery apply方法 和when then 结合

var promises = [
    $.get('response1.php'),
    $.get('response2.php')
];

$.when.apply($, promises)
    .then(function (res1, res2) {
        console.log('Response 1:', res1);
        console.log('Response 2:', res2);
    })
    .fail(function (err) {
        console.log('Error:', err);
    });

单独用when,then , 异步执行函数,

$.when(
    $.get('response.php').then(function (res) {
        console.log(res);
    }).fail(function (err) {
        console.log(err);
    })
).then(function () {
    console.log('this is second');
});

当使用 Promise 或 Deferred 对象(如 jQuery 的 $.when().then())时,JavaScript 中首先执行 $.when() 方法内部的代码。

$.when() 方法用于等待多个 Promise 或 Deferred 对象被解决(或被拒绝)。它接受一个或多个 Promise 作为参数,并等待它们全部成功解决,或者其中任何一个被拒绝。

一旦传递给 $.when() 的所有 Promise 都成功解决,.then() 方法内部的代码将执行。如果任何一个 Promise 被拒绝(即发生错误),则会执行.fail() 方法(或标准 Promise 语法中的 .catch()),而不是执行 .then() 块内的代码。

这种行为确保只有当传递给 $.when() 的所有 Promise 都成功解决时,.then() 块内部的代码才会执行,从而让您可以相应地处理这些 Promise 的结果。

举例