我有下面的示例代码使用jQuery推迟。我似乎无法理解的是,虽然brushTeeth函数返回被拒绝的承诺,但为什么总是正在解析另一个延迟的collectionResults。jQuery延迟不被拒绝
一些jQuery延期阅读说,如果在$ .when中传递的函数不是承诺,它们将立即解决,但brushTeeth实际返回一个承诺。
线索我在做什么错在这里?
ShowerModule = (function($) {
function init(){
var result = $.Deferred();
var collectionResults = $.when(brushTeeth);
collectionResults.done(function(){
console.log("done");
})
collectionResults.fail(function(){
console.log("reject");
})
}
function brushTeeth() {
var result = $.Deferred();
result.reject('["bah"]');
return result.promise();
}
return {
init : init
}
}(jQuery));
ShowerModule.init();
是的,除非这是一个更广泛的东西的简化,那么'.when()'是不必要的。 'brushTeeth()。done(function(){...})。fail(function(){...});'会产生同样的效果。使用'.when()'来响应多个promise的组合分辨率。 – 2013-03-09 01:17:44
是的,这是一个简单的例子。我使用.when()的情况下,需要解决2个或更多的承诺:) – Dhana 2013-03-12 19:42:22