jq中 then 和 done有什么区别?
jquery的deferred对象的done方法和then方法都能实现链式调用,
但是他们的作用是有区别的,then方法中如果你传递的方法有返回值,那么他会传递给下一个链式调用的方法。而done方法与此相反,你传递的方法就算有返回值,done方法也不会把你的返回值传给下一个链式调用的方法的
举个例子:
var defer = jQuery.Deferred();
defer.done(function(a,b){
console.log("a = " + a+"b = " + b);
return a * b;
}).then(function(res){
console.log(res); // res = 2
})
defer.resolve( 2, 3 );
解析: 上面说到 done 不会传递给下一个链式调用的方法 , 所以then中的参数还是resolve中的2,
如果上面的dene换成then的话 那么res就会是6;
如果一个请求的方法中需要好几个接口的话,可能这几个接口都是相互调用的, 那么就需要用到then了
这篇博客探讨了jQuery中deferred对象的then和done方法的区别。then方法允许链式调用并传递返回值,而done方法则不考虑返回值。通过一个示例展示了当deferred对象解决时,then接收并传递返回值,而done则不传递。在处理多个接口调用时,then更适合用于依赖上一步结果的情况。
242

被折叠的 条评论
为什么被折叠?



