2016-07-27 36 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