Javascript .then()对aysnc并等待量角器

Javascript .then()对aysnc并等待量角器,javascript,angularjs,testing,protractor,Javascript,Angularjs,Testing,Protractor,我不熟悉量角器,一直在阅读使用.then()函数的承诺链 比如说 this.getContent = function(content) { return element.all(by.repeater('item in list')).filter(function(elem) { return elem.getText().then(function(text) { return text; }); }).first(

我不熟悉量角器,一直在阅读使用.then()函数的承诺链

比如说

 this.getContent = function(content) {
    return element.all(by.repeater('item in list')).filter(function(elem) {
        return elem.getText().then(function(text) {
            return text;
        });
    }).first();
};
这可以很好地得到我想要的文本。然而,我如何重新构造它以使用async和await而不是.then()函数呢

每次我尝试时,我只得到一个元素浏览器,没有文本

提前感谢

您需要将函数标记为异步,这意味着在该函数中您将有异步任务,然后,为每个要转换为同步的任务设置等待字,而不是一直等待它的承诺得到解决

this.getContent = async function(content) {
  return await element.all(by.repeater('item in list')).filter(async function(elem) {
    return await elem.getText();
  }).first();
};

可能值得注意的是,
async
wait
then
等的承诺没有什么不同。所以不要期望这会“让codez更快”,因为它不会
async
await
只是您已经在做的“这可以很好地获得我正在寻找的文本”的语法糖,
function(text){return text;}
的返回值对
.filter()
调用没有任何作用。
.filter()
部分的作用与:
.filter(function(){return true;})
是的,我从filter函数中删除了一些代码。因此,在await?中也可以使用.then(),如果要使用
async/await
,为什么不在第一个函数中也使用它呢<代码>等待元素。全部…