catch๊ฐ ์ค๋ฅ ๊ฐ์ฒด๊ฐ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ด๊ฒ์ด ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ฐ์ด ๋๋ Angular์ $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
๋ง ๊ฑฐ๋ถํ๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค. ๋ฐ๋ฉด ์ด์ 200-300 ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
@mzabriskie
๋ํ config ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ 2xx/3xx๊ฐ ์๋ ์๋ต์ด ๋ฐํ๋ ๋ ์ทจํด์ผ ํ ์กฐ์น๋ฅผ ๊ฒฐ์ ํ ์๋ ์์ต๋๋ค.
request-promise
lib๋ ์ด๋ฅผ ์ํด simple
ํ๋๊ทธ/์ต์
์ ์ฌ์ฉํฉ๋๋ค. simple
๊ฐ true
์ผ ๋ request-promise๋ ๋คํธ์ํฌ๊ฐ ์๋ ์ค๋ฅ(2xx, 3xx)์ ๋ํด ๊ฑฐ๋ถํฉ๋๋ค. ํ๋๊ทธ๊ฐ false์ด๋ฉด ์๋ฌด ๊ฒ๋ ๊ฑฐ๋ถํ์ง ์์ผ๋ฉฐ ์ฌ์ฉ์์ ์ฑ
์์ด ๋ฉ๋๋ค. ๋๋ ์ด๊ฒ์ด ๋งค์ฐ ์ ์ฉํ๋ค๋ ๊ฒ์ ์์๊ณ ๋ ์ค์ ์ ๋ชจ๋ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ๊ธฐ๋ณธ IMO์ด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก true
๋ก ๋จ์ํ๊ฒ ์ค์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/request/request-promise#get -a-rejection-only-if-the-request-failed-for-technical-reasons
#24์ ์ค๋ณต์ผ๋ก ์ข ๋ฃ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ด ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ฐ์ด ๋๋ Angular์ $http๋ก ์ํ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ค์๊ฐ ๊ทธ๊ฒ์ ์ธ๊ณต๋ฌผ์ด๋ฉฐ ์ผ์ ํ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์๋๋๋ค. ๊ด๋ จ๋๋ ๊ฒฝ์ฐ ์๋ต ์ธ๋ถ ์ ๋ณด๊ฐ ์ฒจ๋ถ๋
Error
๊ฐ ์ฌ์ฉ๋๋ ๋ณด๋ค ์ผ๊ด๋ ์ค๋ฅ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ณ ์ถ์ต๋๋ค.๋ํ HTTP ์ํ ์ฝ๋์ ๊ด๊ณ์์ด ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋
Promise
๋ง ๊ฑฐ๋ถํ๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค. ๋ฐ๋ฉด ์ด์ 200-300 ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.