【发布时间】:2014-05-20 01:54:19
【问题描述】:
我正在使用 Angularjs Protractor 进行 e2e 测试,并且我正在尝试对列中的值求和。在循环内部,我可以很好地打印出每个值,但我不知道如何将它们全部添加。如果我尝试在 for 循环之后返回总计,则它是未定义的。
function getTotal() {
ptor.findElements(protractor.By.className('col33')).then(function(promColCells) {
var total;
for (var i = 2; i < promColCells.length; i += 2) {
promColCells[i].getText().then(function(promCellString) {
total += parseFloat(promCellString);
});
}
return total;
});
};
【问题讨论】:
-
这些操作是异步的吗?如果是,您根本无法从一系列异步操作中同步返回总数?如果操作不是异步的,那么我试图弄清楚你为什么还要尝试使用 Promise,因为必须有更简单的方法。
-
操作是异步的,这就是我最困惑的地方。
-
那么,您根本无法从
getTotal()同步返回total,因为当getTotal()返回时它还没有完成。您将需要让getTotal()返回一个承诺并在完成计算total时解决该承诺,或者让getTotal()接受回调并调用该回调并在计算完成时将总数传递给它。你必须重组它。
标签: javascript angularjs promise protractor angular-promise