量角器控制流调度程序不以可靠的方式处理匿名函数声明和执行

时间:2014-09-24 18:19:34

标签: protractor anonymous

以下是示例代码:

//some code in "OuterFunction"
var outterProm = protractor.promise.Deferred();
(function doMore(arg){
    var innerProm = protractor.promise.Deffered();
    callSomeFunctionWhichReturnsPromise().then(function(value){
         //code to process value
         innerProm.fulfill();
    };
    return innerProm;
})("something").then(function(){
outterProm.fulfill();
});

我观察到量角器调度然后开始执行OutterFunction但是当遇到doMore函数声明时(在OutterFunction执行期间)它调度doMore,但不执行doMore ...导致然后尝试继续执行OutterFunction导致a .then()调用doMore返回值(由于doMore从未执行以返回promise,因此未定义)。

我对此是否正确?这会是一个量角器问题吗?任何解决方法?

1 个答案:

答案 0 :(得分:0)

我错误地解决了代码问题。

问题在于:     var prom = protractor.promise.Deferred();

应该是:     var prom = new protractor.promise.Deferred();

因此,我原来的问题不再有效。