약속을 처음 접했고 올바르게 사용하는지 잘 모르겠습니다. 몇 가지 약속으로 계산을하려고하므로 여러 기능을 함께 묶었습니다. 처음에 나는 다음과 같이 작성했다. 그러나 효과가있는 코드는 좋은 코드처럼 보이지 않는다. 어떻게 연쇄 함수에서 반환 된 약속을 참조합니까?
it('should verify CPC column', function() {
ptor.findElements(protractor.By.className('aggRow')).then(function(promCells) {
getAggCellColumn('CPC').then(function(promColCPC) {
getAggCellColumn('Spend').then(function(promColSpend) {
getAggCellColumn('Clicks').then(function(promColClicks) {
promCells[promColCPC].getText().then(function(promStringCPC) {
promCells[promColSpend].getText().then(function(promStringSpend) {
promCells[promColClicks].getText().then(function(promStringClicks) {
var floatCPC = parseFloat(promStringCPC);
var floatSpend = parseFloat(promStringSpend);
var floatClicks = parseFloat(promStringClicks);
var result = Math.round((floatSpend/floatClicks) * 100)/100;
expect(floatCPC).toEqual(result);
});
});
});
});
});
});
});
});
는 좀 더 약속을 연구하고 다음과 같은 내놓았다 :이 작동하지 않습니다
it('should verify CPC column', function() {
ptor.findElements(protractor.By.className('aggRow'))
.then(getAggCellColumn('CPC'))
.then(getAggCellColumn('Spend'))
.then(getAggCellColumn('Clicks'))
.then(promCells[promColCPC + 2].getText())
.then(promCells[promColSpend + 2].getText())
.then(promCells[promColClicks + 2].getText())
.then(function(promStringClicks) {
var floatCPC = parseFloat(promStringCPC);
var floatSpend = parseFloat(promStringSpend);
var floatClicks = parseFloat(promStringClicks);
var result = Math.round((floatSpend/floatClicks) * 100)/100;
expect(floatCPC).toEqual(result);
});
});
,하지만 난 promCells 될 findElements의 결과를 얻기 위해 노력하고있어. 또한 getText() 함수의 결과를 참조하고 싶습니다. 이 문제에 다르게 접근해야하는지 알려주세요. 감사! JS에서
나는이처럼 쓰기에 대해 생각했다 ...
it('should verify CPC column', function() {
ptor.findElements(protractor.By.className('aggRow'))
.then(function(promStringClicks) {
var floatCPC = parseFloat(promCells[getAggCellColumn('CPC') + 2].getText());
var floatSpend = parseFloat(promCells[getAggCellColumn('Spend') + 2].getText());
var floatClicks = parseFloat(promCells[getAggCellColumn('Clicks') + 2].getText());
var result = Math.round((floatSpend/floatClicks) * 100)/100;
expect(floatCPC).toEqual(result);
});
});
'getAggCellColumn'과'getText'가 비동기인가요? – Bergi