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 的结果。