рдХреИрдЪ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдПрд░рд░ рдСрдмреНрдЬреЗрдХреНрдЯ?
рдЗрд╕ рддрд░рд╣ рдпрд╣ рдПрдВрдЧреБрд▓рд░ рдХреЗ $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 . рдХреЗ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рддрд░рд╣ рдпрд╣ рдПрдВрдЧреБрд▓рд░ рдХреЗ $http рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдХрдореЛрдмреЗрд╢ рдпрд╣ рдПрдХ рдХрд▓рд╛рдХреГрддрд┐ рд╣реИ рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реЛред рдореИрдВ рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рддреНрд░реБрдЯрд┐ рдкрде рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ
Error
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╡рд░рдг рд╕рдВрд▓рдЧреНрди рд╣реЛрддрд╛ рд╣реИредHTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдореИрдВ рдХреЗрд╡рд▓
Promise
рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lib рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрдмрдХрд┐ рдЕрдм 200-300 рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдХреЛрдИ рднреА рдЪреАрдЬ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджреА рдЬрд╛рддреА рд╣реИред