Функция, которая принимает обратный вызов в качестве входных данных и возвращает функцию. - PullRequest
0 голосов
/ 26 октября 2018

Напишите функцию один раз, которая принимает обратный вызов в качестве ввода и возвращает функцию. Когда возвращаемая функция вызывается в первый раз, она должна вызвать обратный вызов и вернуть этот вывод. Если он вызывается в любое дополнительное время, вместо повторного вызова обратного вызова он просто вернет выходное значение с момента первого вызова.

Помогите! Я получил ошибку, такую ​​как синтаксическая ошибка. Недопустимая инструкция возврата. Я застрял при написании закрытия для этой задачи выше, и вот мой код:

function once(func) {
  var called = 0,result;
	function inner(num){
    if(!result && called <2){
      called++;
      result = func(num);
      return result;
    }else{
      return result;
    }
    }
    
  }
  return inner;
}

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Я получил ошибку, такую ​​как синтаксическая ошибка. Недопустимая инструкция возврата

  } //<--- extra/un-wanted
  return inner;
}

Попробуйте:

var add = (function(cb) {
  var done = false;
  var data = 0;
  return function(num) {
    if (!done) {
      done = true;
      data = (num + 1);
    }
    cb(data);
  };
});

var bar = function(res) {
  console.log('bar, res = ', res);
};

var foo = add(bar);

foo(2);
foo(1);
0 голосов
/ 26 октября 2018

Вам нужно объявить вызываемую переменную вне функции

var called = 0;
function once(func) {
  var result;
	function inner(num){
    if(!result && called <2){
      called++;
      result = func(num);
      return result;
    }else{
      return result;
    }
    }

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