如何迭代数组来定义承诺链的数量?

How to iterate on array to define the number of promise chains?

我想从 chai npm 模块添加链接到 http.request(url).post(uri),用于 mocha 测试 feramework。 所以我需要为 post 添加 fieldattach 承诺,只要来自数组的值将作为这些 chai 方法的参数传递 如下:

var props = ['name:Sara', 'email:sara@mail.com', '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:sara@mail.com', 'password:pass'];
var route = '/app/login';
chaiHttp.request(url).post(route).field('name','Sara').field('email','sara@mail.com').then(function(res){
  //do something with response
  });

post() 返回的 promise 应该是 then() 调用的接收者,但我认为你担心中间的 field() 调用会造成一些伤害。

但是您拥有的硬编码版本证明字段调用会传播它们的接收器,因此它们可以被链接起来。因此,做这样的事情是完全可以的:

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