Передача аргумента в цепочке из функций

97
20 мая 2021, 09:10

Мы работаем с API, и чтобы удобно получать и обрабатывать данные, реализовали следующее: создали функцию, которая возвращает объект с методами. Из этого мы можем получить цепочку функций. Но у нас возникла проблема, что нам нужна еще одна функция вложенная в первый метод, которая будет работать с данными, полученными из родительской функции. Как лучше это реализовать? Либо предложите иной способ реализации, пожалуйста.

Описательная часть, чего мы хотим добиться:

function f() { 
  return { 
    method1: function() { 
      return { 
        returnData: function() { 
          return something1 
        }, 
 
        method3: function(method) { 
          // Производятся манипуляция с результатами работы returnData. 
        } 
      }; 
    }, 
 
    method2: function() { 
      return something2; 
    } 
  } 
} 
 
let example = f(); 
 
let x = example.method1(); 
 
// Принимает в качестве аргументов method2.returnData(). 
let y = example.method2().method3( /* returnData */ ); 
 
// Возвращает обычные данные. 
y = example.method2().returnData();

И наш уже рабочий код с двумя методами, без третьего:

let arrManagers = []; 
 
let getElements = function(manager) { 
  let responsive; 
 
  return { 
    getLeads: async function() { 
      responsive = await fetch(`/api/v2/leads?responsible_user_id=${manager}`, { 
          method: 'GET', 
          mode: 'cors', 
          headers: { 
            'Content-Type': 'application/json' 
          } 
        }) 
        .then(response => response.json()) 
        .then(data => console.log(data)) 
    }, 
 
    getContacts: async function() { 
      responsive = await fetch(`/api/v2/contacts?responsible_user_id=${manager}`, { 
          method: 'GET', 
          mode: 'cors', 
          headers: { 
            'Content-Type': 'application/json' 
          } 
        }) 
        .then(response => response.json()) 
        .then(data => console.log(data)) 
    } 
  } 
 
}

Answer 1

Вопрос давно исчерпан, привести код не смог. Всё разрешилось на том, что мы в методе возвращали текущий объект:

return this;

И в методах просто обрабатывали информацию об объекте. Промежуточно, мы сохраняли информацию в переменной, а потом в другом методе, который вызывался в цепочке, обрабатывали

this

и все переменные.

READ ALSO
Выбор предыдущего элемента, по которому был клик

Выбор предыдущего элемента, по которому был клик

Объясню для ситуации в целомЕсть такой себе фильтр по категориям

98
Зачем этот алгоритм и что он делает?

Зачем этот алгоритм и что он делает?

Есть кусок кода, я не понимаю, зачем он и как работаетПо идее функция getComponentTypeID() возвращает какой-то ID (зависящий от количества вызовов) на 1 больше...

117
как определить inline функцию?

как определить inline функцию?

Как определить встроилась ли функция или у нее свой адрес и реализация, как у не встраимовой функции? Компилятор может игнорировать инструкцию,...

85