Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript如何编写处理动态方法链接的函数_Javascript_Method Chaining_Supertest - Fatal编程技术网

javascript如何编写处理动态方法链接的函数

javascript如何编写处理动态方法链接的函数,javascript,method-chaining,supertest,Javascript,Method Chaining,Supertest,假设我有下面的方法 api.post('users') .set(key,value); .send(data) .expect(201) 我对javascript很好奇,我如何设置一个函数来动态调用/chain.set,根据对象中的键数在第一个方法中设置?所以如果我有对象foo={a:1,b:2,c:2} 该函数的行为如下所示 api.post('users') .set(a,1) .set(b

假设我有下面的方法

api.post('users')
        .set(key,value);
        .send(data)
        .expect(201)
我对javascript很好奇,我如何设置一个函数来动态调用/chain.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

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

为什么不更改
.set()
方法,使其允许您设置多个变量,例如
.set({a:1,b:2,c:3})
?链接只需返回
或包含每个方法下一个方法的某个对象即可完成,但是,如果您的方法是异步的,并且您希望在前一个方法完成后才调用下一个方法,那么这要复杂得多……然后将此方法设置为
api
,是的。请记住,只有在设置调用的顺序不重要的情况下,此方法才有效:)
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);