Индивидуальное решение для реализации функции обратного вызова - PullRequest
0 голосов
/ 28 февраля 2012

Возможно ли обернуть такие функции, как 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 ]

2 голосов
/ 28 февраля 2012

Просто добавьте его в конце вашей функции внутри setTimout

// *snip*
setTimeout(function () { 
    console.log("1");
    callback();
}, 1000);
// *snip*
0 голосов
/ 28 февраля 2012

Не уверен, что вы просите.Просто убедитесь, что это функция, и вызовите ее:

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');

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...