我正在尝试从列表视图中查找项目的索引。要查找我正在使用此函数的索引
function restFunction(appName) {
var indexForItem = 0;
var a = element.all(by.repeater("app in itemList").column("app.itemName")).each(function (element, index) {
element.getText().then(function (name) {
console.log("Name is " + name);
if (name == "sam") {
indexForItem = index + 1;
console.log("Ïndex is " + indexForItem );
a = index;
}
});
});
return a;
}
在量角器中,我怎么能等待上述承诺得到解决。现在,当我打电话给我的restFunction时,我总是在未决状态
中获得承诺答案 0 :(得分:0)
您的代码看起来不正确,特别是返回值。您正在返回函数调用 - element.all(locator).each(eachFunction)
,它将返回一个无法解析为任何内容的Promise。查看文档here。
返回
!webdriver.promise.Promise一个承诺,将在何时解决 已在所有ElementFinder上调用函数。承诺会 解析为null。
虽然您稍后在呼叫中重新分配值,但由于模式是异步的,因此它不会等到重新分配。
您必须更改它才能直接返回索引
function restFunction(appName) {
return element.all(by.repeater("app in itemList").column("app.itemName")).each(function (element, index) {
return element.getText().then(function (name) {
if (name === "sam") {
return (index+1);
}
});
});
}
当你调用函数时 - 你必须解决Promise
restFunction('').then(function _resolvePromiseOfCall(value){
console.log('value')
})