# Promise

Doozuuยท2022๋…„ 11์›” 25์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
29/99

๐Ÿ“Œ Promise๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์„ฑ๊ณต/์‹คํŒจ ํŒ์ • ๊ธฐ๊ณ„๋‹ค.

(์„ฑ๊ณตํ•˜๋ฉด then(), ์‹คํŒจํ•˜๋ฉด catch()๋ฅผ ์‹คํ–‰)

โญ๏ธ ์ฝœ๋ฐฑํ•จ์ˆ˜ ๋””์ž์ธ ํŒจํ„ด์ด ๋งˆ์Œ์— ์•ˆ๋“ค์‹œ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” ์ฝ”๋“œ/ํ•จ์ˆ˜ ๋””์ž์ธ ํŒจํ„ด์ผ ๋ฟ์ด๋‹ค.
ajax ์š”์ฒญ, setTimeout, ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ ๋“ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ ์”€.



๊ธฐ๋ณธ ํ˜•ํƒœ

var ํ”„๋กœ๋ฏธ์Šค =  new Promise();

ํ”„๋กœ๋ฏธ์Šค.then(function(){
})


์ฝœ๋ฐฑํ•จ์ˆ˜์— ๋น„ํ•ด ์ข‹์€ ์ 

  1. ์ฝ”๋“œ๊ฐ€ ์˜†์œผ๋กœ ๊ธธ์–ด์ง€์ง€ ์•Š์•„์„œ ๋ณด๊ธฐ ์ข‹์Œ
  2. ์„ฑ๊ณต/์‹คํŒจ์˜ ๊ฒฝ์šฐ์— ๋งž์ถฐ ๊ฐ๊ฐ ๋‹ค๋ฅธ ์ฝ”๋“œ ์‹คํ–‰ ๊ฐ€๋Šฅ(then, catch)


์„ฑ๊ณต(resolve), ์‹คํŒจ(resolve) ํŒ์ • ๋””์ž์ธ

var ํ”„๋กœ๋ฏธ์Šค =  new Promise(function(resolve,reject){
	resolve(); // ์„ฑ๊ณต ํŒ์ • ๋‚ด๋ฆผ -> then ์‹คํ–‰๋จ
	reject(); // ์‹คํŒจ ํŒ์ • ๋‚ด๋ฆผ -> catch ์‹คํ–‰๋จ
});

ํ”„๋กœ๋ฏธ์Šค.then(function(){
}).catch(function(){
})


์˜ˆ์ œ

์–ด๋ ค์šด ์—ฐ์‚ฐ์ด ๋๋‚˜๋ฉด ํŠน์ • ์ฝ”๋“œ ์‹คํ–‰ํ•˜๊ธฐ

var ํ”„๋กœ๋ฏธ์Šค =  new Promise(function(resolve,reject){
	var ์–ด๋ ค์šด ์—ฐ์‚ฐ = 1 + 1; // 1. ์—ฐ์‚ฐ์„ ๋จผ์ € ํ•˜๊ณ 
	resolve(); // 2. then ์ฝ”๋“œ ์‹คํ–‰
});

ํ”„๋กœ๋ฏธ์Šค.then(function(){
	console.log('์„ฑ๊ณตํ–ˆ์–ด์š”') // ์ถœ๋ ฅ
}).catch(function(){
	console.log('์‹คํŒจํ–ˆ์–ด์š”')
})

์„ฑ๊ณต/์‹คํŒจ์‹œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ

  • ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค.
var ํ”„๋กœ๋ฏธ์Šค =  new Promise(function(resolve,reject){
	var ์–ด๋ ค์šด ์—ฐ์‚ฐ = 1 + 1; 
	resolve(์–ด๋ ค์šด ์—ฐ์‚ฐ); // ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ’ ๋„˜๊น€
});

ํ”„๋กœ๋ฏธ์Šค.then(function(๊ฒฐ๊ณผ){
	console.log(๊ฒฐ๊ณผ) // 2 ์ถœ๋ ฅ
}).catch(function(){
	console.log('์‹คํŒจํ–ˆ์–ด์š”')
})

1์ดˆ ํ›„์— ์„ฑ๊ณต ํŒ์ •ํ•˜๊ณ  ํŠน์ • ์ฝ”๋“œ ์‹คํ–‰ํ•˜๊ธฐ

var ํ”„๋กœ๋ฏธ์Šค =  new Promise(function(resolve,reject){
	setTimeout(function(){
    	resolve();
	},1000);
});

ํ”„๋กœ๋ฏธ์Šค.then(function(){
	console.log('์„ฑ๊ณตํ–ˆ์–ด์š”') // 1์ดˆ ํ›„ ์ถœ๋ ฅ๋จ.
}).catch(function(){
	console.log('์‹คํŒจํ–ˆ์–ด์š”')
})

promise์˜ 3๊ฐ€์ง€ ์ƒํƒœ

  1. ์„ฑ๊ณต : resolved
  2. ์‹คํŒจ : rejected
  3. ํŒ์ • ๋Œ€๊ธฐ์ค‘ : pending

promise์— ๋Œ€ํ•œ ์˜คํ•ด

๋™๊ธฐ์‹ ์ฒ˜๋ฆฌ๋ฅผ ๋น„๋™๊ธฐ์  ์ฒ˜๋ฆฌ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค?

: ๋น„๋™๊ธฐ๋ž‘ ์ƒ๊ด€์—†์Œ! ๊ทธ๋ƒฅ ์ฝ”๋”ฉ ์Šคํƒ€์ผ์ž„.



Promise๊ฐ€ ์ ์šฉ๋œ ๊ณณ๋“ค

  1. jQuery.ajax()
  2. fetch() -> promise๋ฅผ returnํ•จ.
    ํ™œ์šฉ : fetch().then().catch()
profile
๋ชจ๋“ ๊ฒŒ ์ƒˆ๋กญ๊ณ  ์žฌ๋ฐŒ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์ƒˆ์‹น

0๊ฐœ์˜ ๋Œ“๊ธ€