done 与 then 的区别

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

jquery里的deferred对象,有done方法,也有then方法,区别是什么呢?

看一下这面的代码,就清楚了:

var d = $.Deferred();

var addOne = function(x) {
  console.log(x);
  return x + 1;
};
  
var x = d.done(addOne).done(addOne).done(addOne);
var y = d.then(addOne).then(addOne).then(addOne);
 
console.log(x == d);
console.log(y == d);

d.resolve(1);

输出如下:

true
false
1
1
1
1
2
3

结论是:

  • done 只是把监听器加到promise身上,返回的是原来的promise
  • then 会把监听器应用到promise的值,并且会创建新的promise

一般情况下,用then就够了

转载于:https://my.oschina.net/mustang/blog/506318

你可能感兴趣的:(done 与 then 的区别)