for 循环中的 Promise
Promises inside for loops
我正在为此苦苦挣扎:
- 点击一个按钮获取一组数据
- 检查返回的行数是否符合我的预期
- 我需要运行 10 次,每次我都希望得到不同的行数
下面的代码片段不起作用,因为 'i' 不是我所期望的。我怎样才能完成这项工作?
for (var i = 0; i < subElements.length; ++i) {
element(by.id('get-data')).click();
// Check users returned
element.all(by.id('users')).map(function (elm) {
return elm;
}).then(function (users) {
expect(users.length).toBe(expectedRecords[i]);
// Some more checks to be added later
});
}
使用蓝鸟
var Promise = require('bluebird');
it('my test', function(done){
var promises = subElements.map(function(subElm, i){
return element(by.id('get-data')).click()
.then(function(){
// Check users returned
return element.all(by.id('users')).map(function (elm) {
return elm;
})
})
.then(function(users) {
expect(users.length).toBe(expectedRecords[i]);
});
});
Promise.all(promises).nodeify(done);
})
关于:
for (var i = 0; i < subElements.length; ++i) {
element(by.id('get-data')).click();
var count = element.all(by.id('users')).count();
expect(count).toBe(expectedRecords[i]);
}
只要您不在 then
中访问 i
,它就是您想要的,否则 i
将是您循环中的最后一个值,您我需要关闭。
编辑:见
我正在为此苦苦挣扎:
- 点击一个按钮获取一组数据
- 检查返回的行数是否符合我的预期
- 我需要运行 10 次,每次我都希望得到不同的行数
下面的代码片段不起作用,因为 'i' 不是我所期望的。我怎样才能完成这项工作?
for (var i = 0; i < subElements.length; ++i) {
element(by.id('get-data')).click();
// Check users returned
element.all(by.id('users')).map(function (elm) {
return elm;
}).then(function (users) {
expect(users.length).toBe(expectedRecords[i]);
// Some more checks to be added later
});
}
使用蓝鸟
var Promise = require('bluebird');
it('my test', function(done){
var promises = subElements.map(function(subElm, i){
return element(by.id('get-data')).click()
.then(function(){
// Check users returned
return element.all(by.id('users')).map(function (elm) {
return elm;
})
})
.then(function(users) {
expect(users.length).toBe(expectedRecords[i]);
});
});
Promise.all(promises).nodeify(done);
})
关于:
for (var i = 0; i < subElements.length; ++i) {
element(by.id('get-data')).click();
var count = element.all(by.id('users')).count();
expect(count).toBe(expectedRecords[i]);
}
只要您不在 then
中访问 i
,它就是您想要的,否则 i
将是您循环中的最后一个值,您我需要关闭。
编辑:见