实现回调函数的自定义解决方案

时间:2012-02-28 14:21:23

标签: javascript jquery callback

是否可以包装setTimeout之类的函数然后触发回调。就像在jQuery中$(selector).on('action', callback)

var obj = {
   mth1: function (callback) {
       //----need to wrap to something
          setTimeout(function () { console.log("1"); }, 1000);
          console.log('2');
       //----
       // callback;
   }
};
function callback() {
   console.log('3');
};
(function () { obj.mth1(callback); }) ();

我需要什么:

2
1
3

2 个答案:

答案 0 :(得分:2)

只需在setTimout

内的函数末尾添加它
// *snip*
setTimeout(function () { 
    console.log("1");
    callback();
}, 1000);
// *snip*

答案 1 :(得分:0)

不确定你要求的是什么。只需确保它是一个函数并调用它:

mth1: function (callback) {

   //----need to wrap to something
   setTimeout(function () { 
      console.log("1");
      // be sure it is a function
      if (callback&& getType.toString.call(callback) == '[object Function]';) {
        // call it
        callback();
      }
   }, 1000);

   console.log('2');

}