I am trying to implement a sort method on protractor ElementArrayFinder
. As known, all protractor methods return promises.
So my sort method has a condition which depends on promises resolution.
I am using a node plugin for async/await
in order to make it compatible with node.js versions lower than 6.
(Here the plugin: https://www.npmjs.com/package/asyncawait)
Here my code, where this
is the ArrayElementFinder
:
var asyncCompare = async(function(a, b) {
let x = await (a.getText());
let y = await (b.getText());
console.log(x.localeCompare(y));
return x.localeCompare(y);
});
var sortTheArray = async(function(arrayOfElementFinders) {
return await (arrayOfElementFinders.sort(asyncCompare));
});
this.then((elements) => {
let arrayOfElementFinders = [elements[0], elements[1], elements[2]];
let sortedArray = sortTheArray(arrayOfElementFinders);
console.log('array sorted');
});
Unfortunately the timing execution is not the one I expect. The print: array sorted
happens before than the prints of comparing x.localeCompare(y)
.
Any idea what am I doing wrong? And any idea how to achieve my objective?
Thanks a lot for any help
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…