有没有一种简单的方法来确定Protractor是否正在返回一个承诺?

时间:2016-01-04 06:18:57

标签: javascript protractor

我希望以任何快速的方式(希望我可以在许多/所有实例中使用它)来验证选择器是否返回一个promise而不是一个元素。

2 个答案:

答案 0 :(得分:2)

黑客解决方案可能类似于:

var result = something.getSomething(someArgs);

if(result.then){
  // it's a promise.
}else{
  // the usual stuff.
}

正确的方式可能是使用instanceof,我相信量角器承诺的类型为webdriver.promise.Promise(想要对这一点进行一些确认),一个简单的检查方法可能是:

function isPromise(obj){
  return obj instanceof webdriver.promise.Promise || webdriver.promise.isPromise(obj);
}

//usage
var result = something.getSomething(someArgs);

if(isPromise(result))){
  // it's a promise.
}else{
  // the usual stuff.
}

答案 1 :(得分:0)

如果您不确定某件事是否是承诺,最好的选择是使用promise.when()将其变为承诺(如果它还不是承诺),这样您就可以安全地将结果视为承诺

但是量角器中的大多数东西似乎都返回了我所见过的承诺,所以在大多数情况下这应该是一个冗余的操作。