2016-07-27 23 views
0

我想添加链接http.request(url).post(uri)chai NPM模块摩卡测试feramework。 所以我需要添加fieldattach的承诺,相信是后只要从一个数组中的值将作为参数传递这些柴方法 如下:如何迭代数组以定义承诺链的数量?

var props = ['name:Sara', 'email:[email protected]', 'password:pass']; 
 
var route = '/app/login'; 
 
    chaiHttp.request(url).post(route) 
 
    ./* add field promises as much as the array length */ 
 
    .then(function(res){ 
 
     // do something with this res 
 
    });

我做这样的事情已经:

var props = ['name:Sara', 'email:[email protected]', 'password:pass']; 
 
var route = '/app/login'; 
 
chaiHttp.request(url).post(route).field('name','Sara').field('email','[email protected]').then(function(res){ 
 
    //do something with response 
 
    });

+0

你试过了一个循环吗?或'props.reduce'? – Bergi

+0

是的,我也尝试了一些从这里解决方案http://stackoverflow.com/questions/17757654/how-to-chain-a-variable-number-of-promises-in-q-in-order – SAlidadi

+0

它并没有'工作?为什么?请[编辑]您的问题以包括这些尝试,以便我们可以指导您。 – Bergi

回答

0

post()返回的承诺应该是then()调用的接收方,但我认为您担心干预field()调用会造成一些伤害。

但是你已经证明硬编码的版本证明了现场调用传播他们的接收器,以便它们可以被链接。因此,可以这样做:

var postPromise = chaiHttp.request(url).post(route); // this won't start until your code returns from the event loop 
['name:Sara', 'email:[email protected]', 'password:pass'].forEach(function(pair) { 
    var components = pair.split(':'); 
    postPromise.field(components[0], components[1]); 
}); 
postPromise.then(function(res) { 
}); 
+0

谢谢@danh。你的解决方案工作正常我不擅长承诺:) – SAlidadi