Запуск функции при каждом запуске определенного типа функции

#javascript

#javascript

Вопрос:

Допустим, у меня есть 50 функций в моем проекте. 10 из этих функций являются стандартными функциями, в то время как 40 функций должны:

  • Делают свою уникальную вещь
  • Затем выполните еще одну вещь, идентичную для всех 40 функций (например, подготовьте некоторые визуальные данные для цикла рендеринга)

В качестве примера, написанного в синтаксисе js:

     const functionOne = () => {
        //Do my thing
        prepareRenderData()
    }

    const functionTwo = () => {
        //Do my thing
        prepareRenderData()
    }
    
    const functionThree...
 

Есть ли в JavaScript метод, в котором я могу сделать этот вызов prepareRenderData неявным в функции, что в конечном итоге сэкономит до 40 строк кода в этом случае?

Комментарии:

1. да, вместо вызова этой функции в каждом компоненте вы можете вызвать эту функцию в своем корневом компоненте и сохранить ее данные в context или redux store для их использования. и у react есть плюс для загрузки компонента с помощью отложенной загрузки, поэтому лучший способ — вызвать функцию в определенном компоненте, чтобы ускорить работу приложения.

2. Во-первых, это не синтаксис React, а стандартный JS, во-вторых, вы могли бы использовать декораторы, но тогда вам нужно назначить их или thirs , вы запустили prepareRenderData после вызова этих функций. Но нет неявного вызова функций.

Ответ №1:

Не уверен, что вам следует идти на это из-за потенциальной экономии 40 строк кода, но это достижимо с помощью такой функции-оболочки:

 const getPreparedFunction = (fn) => {
  return () => {
      fn();

      console.log('General stuff is happening');
  };
}
    

const functionOne = getPreparedFunction(() => {
    console.log('I am functionOne');
});

const functionTwo = getPreparedFunction(() => {
    console.log('I am functionTwo');
});

functionOne();

functionTwo(); 

Если вам нужны функции для получения параметров и возврата материала, вы можете изменить getPreparedFunction на:

 const getPreparedFunction = (fn) => {
  return (...args) => {
    const result = fn(...args);

    console.log('General stuff is happening');

    return resu<
  };
};