我有下面使用 jQuery deferred 的示例代码。我似乎无法理解的是,虽然 BrushTeeth 函数返回了一个被拒绝的承诺,但为什么另一个延迟的 collectionResults 总是被解决。
一些 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();