Надявам се, че всеки бърз начин (надявам се, че можем да използваме в много / всички случаи), за да проверим дали един селектор връща обещание, а не елемент.
Отговори:
2 за отговор № 1Решението за хакване може да е нещо като:
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.
}
0 за отговор № 2
Вашият най-добър залог, ако не сте сигурни дали нещо е обещание или не, е да използвате promise.when()
да го превърнете в обещание, ако не е вече едно, и по този начин можете да третирате резултата като обещание безопасно.
Но повечето неща в прослушвателя изглежда се връщат обещания, които съм виждал, така че в повечето случаи това трябва да е излишна операция.