Cypress, l oop, пока ответ на вызов API не будет иметь ожидаемого значения - PullRequest
0 голосов
/ 23 апреля 2020

Я звоню по телефону с кипарисом. Этот API-интерфейс возвращает статус операции, происходящей на стороне сервера. Пример ответа {'status':'13'}. Это означает, что работа выполнена на 13%. Мне нужно подождать, пока я не получу статус 100, прежде чем выполнять другие операции.

...
cy.request(getStatusUrl)
.then(response => {
    console.log(response.body.status);
});
...

Я продолжаю опрашивать getStatusUrl, пока статус не станет равным "100".

Как мне получить значение response.body.status из then{...} для использования в al oop ?

1 Ответ

0 голосов
/ 23 апреля 2020
function pollProgress(url, done) {
  cy.request(url)
    .then(response => {
      const progress = response.body.status;

      // Poll every 500ms until progress reaches 100%
      setTimeout(() => {
        if (progress < 100) {
          pollProgress(url, done);
        } else {
          done({ status: 'OK' });
        }
      }, 500);
    })
    .catch(() => {
      done({ status: 'ERROR' })
    })
}

...

new Promise((resolve, reject) => {
  pollProgress(getStatusUrl, ({ status }) => {
    if (status == 'OK') ? resolve() : reject();
  });
})
.then(() => {
  // it's 100% here if there's no error
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...