2015-02-27 2 views
0

Я пытаюсь вернуть значение из рекурсивной функции с использованием обещаний. Вот пример метода:Возвращаемое значение из рекурсивной функции с использованием Promise

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); 
      } 
     }); 
    } 

} 

Я не в состоянии вернуть значение «я» правильно! Любые предложения по пути достижения этого?

Спасибо,
Sakshi

ответ

0

Вы возвращаетесь внутри обещание, но обещание, в свою очередь ничего не возвращает к функции. Вы можете решить эту проблему, возвращая первое обещание, которое в свою очередь, возвращает значение 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> 
     } 
+1

Я думаю, что 'utils.getRecurisonValue' линия также должна начинаться с префикса' return' тоже. –

+0

Спасибо П.Т. Это действительно разрешило проблему. Но я действительно не понимаю, как это работает! –

Смежные вопросы