让JavaScript中setTimeout支持链式操作的方法

  修改很简单,通过参数判断,然后返回下promise对象

  

复制代码 代码如下:

  (function() {

  var timeout = setTimeout;

  window.setTimeout = function(fn, time) {

  if (!time) {

  time = fn;

  return $.Deferred(function(dfd) {

  timeout(function() {

  dfd.resolvel(dfd);

  }, time);

  }).promise();

  }

  timeout.apply(window, arguments);

  }

  })();

  调用

  

复制代码 代码如下:

  setTimeout(1000).done(function(dnt) {

  console.log(dnt)

  })