@Impuls3

Повторный вызов функции с промисом?

К примеру есть такой код
function zapros1() {
    return new Promise((resolve,reject) => {
        request('http://mysite.com/url1', (error,respnse,body) => {
            if(error) return reject(error);
            return resolve(body);
        })
    })
}

function zapros2() {
    return new Promise((resolve,reject) => {
        request('http://mysite.com/url2', (error,respnse,body) => {
            if(error) return reject(error);
            return resolve(body);
        })
    })
}

async function main() {
    try {
        await zapros1();
        await zapros2();
    } catch (error) {
        console.log(error);
    }
}


Если скажем сайт к которому я обращаюсь, не стабильный и при вызове zapros2() вылетает ошибка, как было бы правильно повторить запрос? Ну к примеру 3 попытки на повтор запроса. Я бы мог повторно вызвать функцию main(), но просто цепочка запросов может состоять из 7 запросов, а ошибка вылетит на 4-м. Не хотелось бы повторно слать 3 предыдущих запроса которые правильно отработали.
  • Вопрос задан
  • 309 просмотров
Пригласить эксперта
Ответы на вопрос 1
@SeltonSoer
let resultZapros1 = false
async function main() {
    try {
      if (!resultZapros1) {
        await zapros1().then((ok) => {
          if (ok) {
            resultZapros1 = true
          }
        });
      }
        await zapros2().then((error) => {
          ...
        });
    } catch (error) {
        main()
    }
}

Я бы сделал как-то так наверно, во втором варианте добавить условие не забудь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы