var defer = jQuery.Deferred();
defer.done(function(a,b){
console.log("a = "+ a+"b = "+ b);
returna * b;
}).done(function( result ){
console.log("result = "+ result);
}).then(function( a, b ){
console.log("a = "+ a+"b = "+ b);
returna * b;
}).done(function( result ){
console.log("result = "+ result);
}).then(function( a, b ){
console.log("a = "+ a+"b = "+ b);
returna * b;
}).done(function( result ){
console.log("result = "+ result);
});
defer.resolve( 2, 3);
运行结果:
- a = 2b = 3
- result = 2
- a = 2b = 3
- result = 6
- a = 6b = undefined
- result = NaN
结论:
- done 只是把监听器加到promise身上,返回的是原来的promise
- then 会把监听器应用到promise的值,并且会创建新的promise