Как обрабатывать статус ошибки в ES6 Promises?

Вы можете использовать только псевдонимы столбцов в предложениях GROUP BY, ORDER BY или HAVING.

Стандартный SQL не позволяет ссылаться на псевдоним столбца в предложении WHERE. Это ограничение наложено, потому что, когда выполняется код WHERE, значение столбца еще не может быть определено.

blockquote>

Скопировано из Документация MySQL

Как указано в комментариях, использование HAVING вместо этого может выполнить эту работу. Обязательно прочитайте это WHERE vs HAVING .

0
задан RuF 13 July 2018 в 10:04
поделиться

4 ответа

Как видно из документов, блок catch будет достигнут, только если запрос не завершился. Когда есть доступный код состояния (и все другие данные также принимаются) fetch будет разрешаться, и поэтому будет достигнут блок then.

Обещание, возвращенное из fetch ( ) не будет отклонять статус HTTP-сообщений, даже если ответ представляет собой HTTP 404 или 500. Вместо этого он будет нормально работать (при нормальном статусе установлен на false), и он будет отклонен только при сбое сети или если что-либо помешало запросу комплектующие. - Источник

Итак, все, что вам нужно сделать, это записать resp.status вместо resp.

fetch(`http://${this.serverAddress}/reset`)
  .then((resp) => {
    Logger.debug(JSON.stringify(resp.status));
  })
  .catch((err) => {
    Logger.debug(JSON.stringify(err));
});

В блоке catch я принимаю сообщение об ошибке с сообщением «Failed to fetch». Информация о статусе отсутствует.

Поэтому, если блок catch получает вызов, запрос еще не закончил. Это может быть вызвано тем, что вы не используете такие опции, как method, headers, ... Если необходимо, какое и какие значения зависят от используемого вами бэкэнда.

0
ответ дан David Michael Huber 17 August 2018 в 13:24
поделиться

Вы можете попытаться обработать статус ошибки, выполнив ошибку при обработке ответа сразу после того, как выборка выполнена с помощью !ok:

fetch('/some/url/')
  .then(response => {
    if (!response.ok) {
      throw Error({ status: response.status });
    }
    response.json();
  })
  .then(response => {
    // do something
  })
  .catch(error => {
    switch(error.status) {
      // ...
    }
  });
1
ответ дан dhilt 17 August 2018 в 13:24
поделиться

После запроса выборки проверьте, соответствует ли ответ. Если нет, введите новую ошибку с помощью специального сообщения. В проверке catch, есть ли это настраиваемое сообщение для заброшенной ошибки. Обращайтесь соответственно. Вы также можете создавать собственные ошибки и проверять их.

0
ответ дан himank 17 August 2018 в 13:24
поделиться
0
ответ дан Vladu Ionut 17 August 2018 в 13:24
поделиться
Другие вопросы по тегам:

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