2015-05-05 6 views
1

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

api.post('users') 
     .set(key,value); 
     .send(data) 
     .expect(201) 

мне было интересно в JavaScript, как я мог настроить функцию динамического вызова/цепи .set на первый метод, основанный на количестве ключей в объекте? Так что если бы я имел объект foo = {a: 1, b:2 , c:2}

функция будет вести себя как следующий

api.post('users') 
      .set(a,1) 
      .set(b,2) 
      .set(c,3) 
      .send(data) 
      .expect(201) 
+0

HTTP: // WWW. i-programmer.info/programming/javascript/4676-chaining-fluent-interfaces-in-javascript.html –

+1

Почему бы вам не изменить свой метод '.set()', чтобы он позволял устанавливать несколько переменных, e. г. '.set ({a: 1, b: 2, c: 3})'? – Barmar

+0

Цепочки выполняются простым возвратом 'this' или некоторого объекта, который содержит следующий метод из каждого метода, но если ваши методы асинхронны и вы хотите, чтобы следующий вызывался только после того, как предыдущий был завершен, это намного сложнее чем это. – jfriend00

ответ

3

Функция может просто вызвать .set в цикле:

function setMultiple(api, values) { 
    for (var key in values) { 
     if (values.hasOwnProperty(key)) { 
      api = api.set(key, values[key])); 
     } 
    } 
    return api; 
} 
+0

... а затем сделайте это методом 'api', да. – Bergi

0
var foo = {a: 1, b:2, c:2 } 
var apiPost = api.post("users"); 
for(var key in foo){ 
    apiPost = apiPost.set(key,foo[key]); 
} 

apiPost.send(data).expect(201);