如何迭代数组来定义承诺链的数量?
How to iterate on array to define the number of promise chains?
我想从 chai
npm 模块添加链接到 http.request(url).post(uri)
,用于 mocha 测试 feramework。
所以我需要为 post 添加 field
和 attach
承诺,只要来自数组的值将作为这些 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) {
});
我想从 chai
npm 模块添加链接到 http.request(url).post(uri)
,用于 mocha 测试 feramework。
所以我需要为 post 添加 field
和 attach
承诺,只要来自数组的值将作为这些 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) {
});