【发布时间】:2018-01-21 12:12:48
【问题描述】:
我正在尝试在量角器ElementArrayFinder 上实现排序方法。众所周知,所有量角器方法都返回承诺。
所以我的排序方法有一个取决于承诺解决的条件。
我正在为async/await 使用节点插件,以使其与低于 6 的 node.js 版本兼容。
(这里的插件:https://www.npmjs.com/package/asyncawait)
这是我的代码,其中this 是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');
});
不幸的是,时间执行不是我所期望的。打印:array sorted 发生在比较 x.localeCompare(y) 的打印之前。
知道我在做什么错吗?知道如何实现我的目标吗?
非常感谢您的帮助
【问题讨论】:
-
Array.prototype.sort 是一个同步函数。
标签: javascript sorting promise async-await protractor