【问题标题】:Is there a simple way to determine if Protractor is returning a promise? [duplicate]有没有一种简单的方法来确定 Protractor 是否正在返回一个承诺? [复制]
【发布时间】:2016-01-04 14:41:34
【问题描述】:

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

【问题讨论】:

    标签: javascript protractor


    【解决方案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.
    }
    

    【讨论】:

    • 投票支持 hack 解决方案,正在寻找instanceof 解决方案的确认。
    • 干杯!这无疑为我指明了正确的方向。不知道instanceof
    【解决方案2】:

    如果你不确定某事是否是一个承诺,你最好的选择是使用promise.when() 将它变成一个承诺,如果它还不是一个承诺,那么你可以安全地把结果当作一个承诺。

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

    【讨论】:

    • 我开始意识到我需要把我的头放在承诺上。对我来说新概念。毫无疑问,我将使用promise.when()。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2021-06-27
    • 2010-09-07
    相关资源
    最近更新 更多