Axios: рдХреИрдЪ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдорд╛рд░реНрдЪ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: axios/axios

рдХреИрдЪ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдПрд░рд░ рдСрдмреНрдЬреЗрдХреНрдЯ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рддрд░рд╣ рдпрд╣ рдПрдВрдЧреБрд▓рд░ рдХреЗ $http рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХрдореЛрдмреЗрд╢ рдпрд╣ рдПрдХ рдХрд▓рд╛рдХреГрддрд┐ рд╣реИ рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реЛред рдореИрдВ рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рддреНрд░реБрдЯрд┐ рдкрде рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ Error рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╡рд░рдг рд╕рдВрд▓рдЧреНрди рд╣реЛрддрд╛ рд╣реИред

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдХреЗрд╡рд▓ Promise рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lib рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрдмрдХрд┐ рдЕрдм 200-300 рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдХреЛрдИ рднреА рдЪреАрдЬ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рддрд░рд╣ рдпрд╣ рдПрдВрдЧреБрд▓рд░ рдХреЗ $http рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХрдореЛрдмреЗрд╢ рдпрд╣ рдПрдХ рдХрд▓рд╛рдХреГрддрд┐ рд╣реИ рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реЛред рдореИрдВ рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рддреНрд░реБрдЯрд┐ рдкрде рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ Error рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╡рд░рдг рд╕рдВрд▓рдЧреНрди рд╣реЛрддрд╛ рд╣реИред

function createError(message, details) {
  var err = new Error(message);

  Object.keys(details, function (key) {
    err[key] = details[key];
  });

  return err;
}

createError('timeout of ' + config.timeout + 'ms exceeded', {
  code: 'ECONNABORTED',
  config: config
});

HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдХреЗрд╡рд▓ Promise рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lib рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрдмрдХрд┐ рдЕрдм 200-300 рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдХреЛрдИ рднреА рдЪреАрдЬ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИред

@mzabriskie
рдЖрдк рдПрдХ рдЧреИрд░ 2xx/3xx рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдкрд░ рдХреНрдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдзреНрд╡рдЬ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рд▓рд┐рдП request-promise lib simple рдзреНрд╡рдЬ/рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЬрдм simple рд╣реИ true , рддреЛ рдЧреИрд░-рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ (2xx, 3xx) рдкрд░ рдЕрдиреБрд░реЛрдз-рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЭрдВрдбрд╛ рдЭреВрдард╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреБрдЫ рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдмрди рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ рдЬреЛ рджреЛрдиреЛрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдорддреМрд░ рдкрд░ true рд▓рд┐рдП рд╕рд░рд▓ рд╕реЗрдЯ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдмреЗрд╣рддрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдИрдПрдордУ рд╣реИред

https://github.com/request/request-promise#get -a-rejection-only-if-the-request-failed-for-technical-reasons

#24 . рдХреЗ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

c0debreaker picture c0debreaker  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghprod picture ghprod  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Baoyx007 picture Baoyx007  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

altruisticsoftware picture altruisticsoftware  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

samayo picture samayo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ