асинхронный журнал ожидания повторных попыток после всех повторных попыток - PullRequest
0 голосов
/ 23 октября 2019

Как я могу console.log, если он все еще терпит неудачу после всех повторных попыток? и console.log, если это удается, используя пакет async-retry:

    const retry = require('async-retry');

    async function updateDB(updateUser) {
        await retry(async () => {
            const res = await updateUser;
            if (/* some error after finishing all retries*/) {
                console.log('failed');
            }
            console.log('Success');
        }, {
          retries: 5
        });
    }

как этого достичь?

или другими словами, как я могу позвонитьдругая функция ( функция A ) только после неудачных попыток повторных попыток? и вызовите функцию B , если она вообще не сработала.

Ответы [ 3 ]

0 голосов
/ 23 октября 2019
 const retry = require('async-retry');

    async function updateDB(updateUser) {
    try{ 
        const result =   await retry(async () => {
            const res = await Promise.all(updateUser).then(()=>{
              try{
                return  new Promise((resolve) => resolve('OK')),  {  retries: 5   }
              }catch(e){
                return  new Promise((resolve) => resolve('KO')),  {  retries: 5   };

              }
         });
         }
      );
    }catch(err){
        console.log('The function execution failed !')

      }

    }
0 голосов
/ 23 октября 2019

Вы можете использовать функцию onRetry, что-то вроде этого

const retry = require('async-retry');

async function updateDB(updateUser) {
    await retry(async () => {
        const res = await test();
        console.log('Success');
    }, {
        onRetry: (err, number) => {
            console.log('attempt', number)
            if (number === 5) {
                console.log(err)
            }
        },
        retries: 5
    });
}
0 голосов
/ 23 октября 2019

Вы пробовали что-то вроде:

const result = await retry(async () => {
    const res = await updateUser;
    if (/* some error after finishing all retries*/) {
        console.log('failed');
    }
    console.log('Success');
    return 'success';
}, {
    retries: 5
});
if (result != 'success') {
    console.log('all failed');
}
...