Javascript .then()对aysnc并等待量角器
我不熟悉量角器,一直在阅读使用.then()函数的承诺链 比如说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(
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
,为什么不在第一个函数中也使用它呢<代码>等待元素。全部…