【问题标题】:javascript how to write a function that handles dynamic method chainingjavascript如何编写一个处理动态方法链接的函数
【发布时间】:2015-05-05 00:08:40
【问题描述】:

假设我有以下方法

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)

【问题讨论】:

  • 你为什么不改变你的 .set() 方法,让它允许你设置多个变量,例如.set({a: 1, b: 2, c: 3})?
  • 链接是通过简单地返回 this 或包含每个方法的下一个方法的某个对象来完成的,但是如果您的方法是异步的并且您希望下一个仅在前一个之后调用完成后,比这复杂得多。

标签: javascript method-chaining supertest


【解决方案1】:

函数可以简单地循环调用.set

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

【讨论】:

  • ……然后把它变成api的方法,是的。
【解决方案2】:
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);

【讨论】:

  • 请记住,这仅在您的集合调用顺序不重要时才有效:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
相关资源
最近更新 更多