2 shewailinjuli shewailinjuli 于 2016.01.20 17:21 提问

大神解答 jQuery deferrd resolve done

var defer = jQuery.Deferred();
defer.done(function(a,b){
return a * b;
}).done(function( result ) {
console.log("result = " + result);
}).then(function( a, b ) {
return a * b;
}).done(function( result ) {
console.log("result = " + result);
}).then(function( a, b ) {
return a * b;
}).done(function( result ) {
console.log("result = " + result);
});
defer.resolve( 2, 3 );

为啥第一个done return return a * b; 第二个alert result=2; 问3跑哪去了?

求大神对resolve()的参数 做下详解

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.01.20 17:55
已采纳

对于done结果返回只是判断是否成功。不作为后续参数传递,传入的参数还是done函数前的。
then的结果是传递到后续函数的。

showbo
showbo   Ds   Rxr 2016.01.21 11:35
showbo
showbo 回复lz__: 如果你看过说明你看得不够认真。在jQuery 1.8之前,then()只是.done().fail()写法的语法糖,两种写法是等价的。在jQuery 1.8之后,then()返回一个新的deferred对象,而done()返回的是原有的deferred对象。如果then()指定的回调函数有返回值,该返回值会作为参数,传入后面的回调函数。
接近 2 年之前 回复
shewailinjuli
shewailinjuli 回复showbo: ![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/4.gif)经看过了
接近 2 年之前 回复
devmiao
devmiao   Ds   Rxr 2016.01.20 17:50
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!