2015-09-27 3 views
0

если функция возвращает ошибку, дальнейший код больше не выполняется. Мне нужно повторить эту функцию до достижения успеха. Как мне это сделать?JS повторите попытку, если ошибка

... // API request... 

function(error, something) { 
    if (!error) { 
    something = true; 
    // Etc... 
    } 
    else { 
     // Code to try again. 
    } 
} 

ответ

0

Попробуйте

do { 
    // do your stuff here 
    }while(error) 

Для тура случае вы можете сделать это следующим образом:

function(error, something) { 
    do { 
     // do your stuff here 
     }while(error) 
} 

Чтобы сделать то, что вы хотите, пока ошибка не станет ложным

Или вы можете использование в то время как

function(error, something) { 
     if(!error){ 
      // this code is executed once 
     } 
      while(error){ 
       // do your stuff here 
       } 
     } 

Он будет проверять ошибки перед выполнением в первый раз

Для более например take a look here

Для последнего комментария вы можете сделать это следующим образом (без петли):

function Test(error, something) { 
     if(!error){ 
      // your code that you want to execute it once 
     } 
     else { 
      // do stuff 
      Test(error, something); // re-call the function to test the if 
     } 
    } 
+0

Извините, я не понимаю. Вы можете объяснить? –

+0

Я отредактировал свой ответ, посмотрите –

+0

Итак, если ошибка ложна, она выполнит do {} до успеха? –

1

Я предпочитаю имея функцию, называющую ее собственностью, чтобы у вас было больше свободы.

function repeat() { 
    repeat() 
} 

T Куришь всевозможные мелочи. Ваш пример будет

const repeat =() => { 
    // Your code 
    if(error) { 
     repeat() 
    } 
} 

Если вы запускаете его только один раз, выполните функцию самоиспускания.

(function repeat() { 
    // Your code 
    if(error) { 
     repeat() 
    } 
})() 

Поскольку мы используем функцию, назвав его собственного, мы можем использовать SetTimeout

(function repeat() { 
    // Your code 
    if(error) { 
     setTimeout(() => { 
      repeat() 
     }, 100) 
    } 
})() 

Это позволяет код, чтобы иметь небольшой перерыв InstEd работать без остановки.