Любая проблема с уловом отклонила обещание и превратила его в исправленный код ошибки?

strlen(base64_decode($encoded_data));

И как основное правило, кодировка base64 увеличивает исходные данные в размере примерно на 33%

0
задан Qiulang 18 January 2019 в 10:27
поделиться

1 ответ

Прежде всего, избегайте конструктора Promise antipattern ! Ваш код axios_call должен выглядеть лучше просто так:

return axios({
    ...
}).catch(err => {
    return { ..., error: err };
});

Затем при каждом вызове этого API отклоненный случай обрабатывается без catch. Я никогда не обрабатывал отклоненное обещание, как это раньше, поэтому я не уверен, что это вызовет какие-либо проблемы, или это просто другой стиль кода, и он тоже отлично работает.

Это работает, но это не хорошо. Этот стиль обработки ошибок странный и действительно не идиоматический. У него те же проблемы, что и у традиционного API обратного вызова в стиле узла с отдельными параметрами error и result:

  • обещание не может знать, обработали ли вы ошибку или нет. Вы не получите никаких необработанных предупреждений об отклонении .
  • Вы всегда должны написать код для работы с res.error, хотите вы этого или нет. При обычном использовании обещания вы могли бы просто предоставить отдельные обратные вызовы onFulfill и onReject, и опускание последнего даст вам разумное поведение по умолчанию при пересылке ошибки, а не просто ее отбрасывании.

Я не вижу никаких преимуществ, которые мог бы дать ваш стиль, поэтому я бы рекомендовал избегать этого и использовать обычные отклонения обещаний.

0
ответ дан Bergi 18 January 2019 в 10:27
поделиться
Другие вопросы по тегам:

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