Выполнить fn (param1, param2) в обратном вызове AngularJS в стиле клика

0

В AngularJS (и я уверен, что видел его в другом месте) вы передаете функцию с параметрами для ng-click. т.е.

<div ng-click="myFunc(param)">Click Me</div>

То, что я хочу сделать, это передать функцию с такими параметрами, как обратный вызов в JS. То есть.

setTimeout(myFunc(param), 2000);

Я полагаю, что это должно быть возможно, так как Угловая кажется, что он ее снял, но может найти его где угодно.


PS. прецедентом для этого является создание setTimeout, который работает с обещаниями, поэтому я могу вернуть его в цепочке обещаний. в случае, если вас это интересует, вот где я застрял:

function qTimeout(fn, duration){
  var deferred = q.defer();

  setTimeout(function () {
    fn(*grr*)
      .then(deferred.resolve)
      .catch(deferred.reject)
  })

  return deferred.promise;
}
  • 0
    Используйте сервис $timeout . Он оборачивает setTimeout , возвращает обещание и может быть связан. docs.angularjs.org/api/ng/service/$timeout
  • 0
    Благодаря @georgeawg, я пытался воспроизвести функциональность в NodeJS, я был просто уверен, что раньше я видел, как она работает в Angular.

1 ответ

1
Лучший ответ

Что вы пытаетесь выяснить, это Closure?

function myFunc(param) {
  return function myFunc2() {
    // do something with param..
    return doAsync(param); // suppose to return promise 
  };
}

setTimeout(myFunc(param), 2000);

myFunc вернет myFunc2 которого есть param из myFunc и myFunc2 будет myFunc2 в setTimeout после 2000 мс.

  • 0
    Да, это было то, что я искал! Я слышал о замыканиях, но никогда не изучал их. Ура!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню