2016-05-23 421 views
1

当我添加的JavaScript文档为以下功能,它会给我一个警告说,返回表达式类型Promise <T>不可分配给类型Promise <T>?

Return expression type Promise<T> is not assignable to a type Promise<T> 

这有什么错用下面的回归defer.promise还是我把return语句在一个错误的地方?

/** 
    * 
    * @param zname 
    * @returns {Promise<T>} 
    */ 
    this.setInfoFromAPI = function (name) { 
     var defer = protractor.promise.defer(); 
     var controlFlow = protractor.promise.controlFlow(); 
     httpRequestUtility.getRestfulAPIToken().then(function (accessToken) { 
      console.log("Access Token is " + accessToken); 
      controlFlow.wait(
       getInfoFromAPI(accessToken, name).then(function (returnData) { 
        if (String(returnData).match(httpStatusCodeClientErrorRegx)) { 
         defer.reject('Get Request Error for Zone Info\nResponse Error Code - ' + returnData); 
        } else { 
         setUpInfoFromAPI(returnData); 
         defer.fulfill(); 
        } 
       }), 60000, 'Get Information').then(function() { 
      }) 
     }); 
     return defer.promise; 
    }; 
+1

也许他们中的一个是anguarl承诺,另一个是量角器承诺? – Bergi

+2

顺便说一句,避免[deferred antipattern](http://stackoverflow.com/q/23803743/1048572)! – Bergi

回答

1

尝试使用Promise更加明确webdriver.promise.Promise代替:

@returns {webdriver.promise.Promise<T>} 
相关问题