【发布时间】:2016-01-04 14:41:34
【问题描述】:
我希望有任何快速的方法(希望我可以在许多/所有实例中使用)来验证选择器返回的是承诺而不是元素。
【问题讨论】:
标签: javascript protractor
我希望有任何快速的方法(希望我可以在许多/所有实例中使用)来验证选择器返回的是承诺而不是元素。
【问题讨论】:
标签: javascript protractor
黑客解决方案可能类似于:
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.
}
【讨论】:
instanceof 解决方案的确认。
instanceof
如果你不确定某事是否是一个承诺,你最好的选择是使用promise.when() 将它变成一个承诺,如果它还不是一个承诺,那么你可以安全地把结果当作一个承诺。
但量角器中的大多数东西似乎都返回了我见过的承诺,所以在大多数情况下这应该是一个冗余操作。
【讨论】:
promise.when()。感谢您的帮助