Protractor 从包含承诺的递归函数返回值

Protractor 从包含承诺的递归函数返回值,protractor,Protractor,我试图从包含承诺的递归函数返回值。 下面是示例方法: getRecursionValue = function(count, i, num, isFound) { if (i < count && !isFound) { somePage.someNum.then(function(numVal) { if (numVal == num) { console.log('Matched at i

我试图从包含承诺的递归函数返回值。 下面是示例方法:

getRecursionValue = function(count, i, num, isFound) {

    if (i < count && !isFound) {
        somePage.someNum.then(function(numVal) {
            if (numVal == num) {
                console.log('Matched at index: ' + i);
                <RETURN VALUE OF I>
            } else {
                element(by.css('css.for.next.link')).click();
                utils.getRecursionValue(count, i + 1, num, false);
            }
        });
    }

}
我无法正确返回'I'的值!有什么建议可以达到这个目的吗

谢谢,
Sakshi

您是从一个承诺内部返回的,但该承诺反过来不会向函数返回任何内容。您可以通过返回第一个承诺来解决此问题,该承诺将返回i的值:

getRecursionValue = function(count, i, num, isFound) {

if (i < count && !isFound) {
    return somePage.someNum.then(function(numVal) {
        if (numVal == num) {
            console.log('Matched at index: ' + i);
            <RETURN VALUE OF I>
        }

我认为utils.getRecurrisonValue行也需要加上return前缀。感谢P.T.这实际上解决了这个问题。但我真的不明白它是怎么工作的!