Search

반응형

'자바스크립트'에 해당되는 글 38건

  1. 2023.07.16 [자바스크립트] JavaScript 에서 비동기 처리 방 async와 await 사용해 보기.
  2. 2023.06.19 [jQuery/javascript]$와 $()에 대한 이야기. 제이쿼리
반응형

안녕하세요. 신기한 연구소입니다.

자바스크립트(javascript) promise에 대해 공부를 하고 포스팅을 했었습니다.

promise를 좀 더 쉽게 사용할 수 있는 방법이 있습니다.

자바스크립트(javascript)에서 지원하는 async/await입니다.

 

 

 

async와 await라고 하니 뭔가 어려워 보이기도 하는데요.

사실 사용 방법은 엄청 간단합니다.

그럼 하나씩 예제를 통해 사용법을 알아봅니다.

 

1. async 

async는 자바스크립트(javascript) 키워드입니다.

보통 async function(함수)라고 쓰인 경우가 있는데 그 이유는 바로 async는 함수를 선언하는 function 앞에 붙여서 사용하기 때문입니다.

1
2
3
async function myAsync() {
   // coding... 
}
cs

function 앞에 async를 붙였습니다.

async 함수의 특징은 promise를 리턴합니다.

그렇다면 promise에서 사용하는 then()을 사용할 수 있다는 의미이기도 합니다.

1
2
3
4
5
6
7
function createPromise() {
    return new Promise((resolve, reject) => {
        resolve('success!!');
    });
}
 
createPromise().then((rtn) => console.log(rtn));
cs

promise를 리턴하는 함수입니다.

resolve로 success!! 를 성공적으로 리턴하게 됩니다.

리턴된 값은 then을 사용해서 구현할 수 있습니다.

위 promise를 async로 바꾸어보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 1
async function myAsync() {
    return('success!!');
}
 
myAsync().then((rtn) => {
    console.log(rtn);
});
 
 
// 2
async function mySndAsync() {
    return Promise.resolve('Wow!!');
}
 
mySndAsync().then((rtn) => {
    return console.log(rtn);
})
 
cs

1번과 2번 두 가지 방식으로 코딩을 해봤습니다.

1번을 보면 promise를 사용한 것 보도 엄청 간단하게 만들어졌습니다.

promise의 .then()을 그대로 사용하는 것을 보면 async funciton이 promise를 리턴하는 게 맞네요.

2번의 경우는 return시 Promise.resolve()를 사용해서 promise 명시적 지정 방식으로 리턴을 했습니다.

역시 사용법은 promise와 같에 .then을 이용했습니다.

Promise.resolve()를 어떤 경우에 사용하는지 궁금했는데 위 예제를 보니 이해가 되네요.

 

2. await

await 키워드는 단어 뜻대로 기다린다는 의미입니다.

자바스크립트(Javascript) 키워드로 async와 짝꿍으로 사용합니다.

await에 대해 아주 중요한 부분이 있습니다.

await는 반드시 async funciton 내에서만 사용할 수 있습니다.

promise가 생성되고 실행이 되는 동안 약간의 시간이 걸릴 수 있습니다. 보통 API 통신의 경우로 생각해 볼 수 있는데요.

결과가 와서 후처리를 해야 되는데 결과가 오기 전에 다음 소스로 진행이 되면 null이나 undefined 등 오류가 발생할 수 있습니다.

이런 경우 promise가 처리될 때까지 기다리라는 명령이 바로 await입니다. 역시 예제를 봐야 이해가 편합니다.

1
2
3
4
5
6
7
8
9
10
11
async function testAwait() {
    var testPromise = new Promise((resolve, reject) => {
        setTimeout(() => resolve("3nd OK!!"), 3000)
    });
 
    var rtn = await testPromise;
 
    console.log(rtn);
}
 
testAwait();
cs

6번 라인을 보면 키워드 await를 사용하고 있습니다. 

async function testAwait 함수 내에서 사용하고 있습니다.

promise로 리턴된 testPromise 앞에서 await를 사용하고 있습니다.

이제 위 소스는 testPromise가 3초 동안 대기하고 '3nd OK!!'를 출력하도록

await로 결과가 올 때까지 대기시킵니다.

보통 promise로 대기하기 위해서는 then()을 사용합니다.

then() 내부에 화살표 함수를 사용해서 리턴 받는 방식이라 구현이 좀 필요하지만

await를 사용하면 간단하게 사용할 수 있겠군요.

다시 강조하지만 await는 async function 내부에서만 사용이 가능합니다.

보통 API 호출하고 결과를 기다리기 위해 await를 자주 사용할 듯합니다.

지금까지 자바스크립트(javascript)의 키워드인 async와 await의 사용에 대해 간단하게 알아봤습니다.

예외처리나 응용 사용방법 그리고 thenable 등에 대한 내용은 다음에 포스팅해 볼게요.

 

다들 즐거운 코딩 생활 하세요~~

반응형
반응형

안녕하세요. 신기한 연구소입니다.

jQuery를 처음 하는 분들이 궁금해하는 부분이 있습니다.

 

jQuery를 공부하면 $를 사용하는데요. 이전 포스팅에서 이야기했듯 $는 jQuery에서 사용하는 특수 기호입니다.

원래 jQuery("p").remove(); 로 사용하는데 단축표기로 $("p").remove(); 로 쓰면 됩니다.

훨씬 짧고 깔끔하네요. 이렇게 약속을 한거니 jQuery개발자라면 바로 이해하겠지요.

$() 사용 방법은 이전 포스팅을 참고하세요.

2021.03.01 - [Software/jQuery] - [ jQuery/javascript]jQuery 기본 사용법에 대해 알아봅니다.

 

[ jQuery/javascript]jQuery 기본 사용법에 대해 알아봅니다.

안녕하세요. 신기한 연구소입니다. 오랜만에 프로젝트에 투입되었는데 jQuery를 사용하네요. ㅎㅎ 사용한 지 오래되어서 기억이 가물거립니다. 복습도 할 겸 포스팅을 해봅니다. 사실 일하면서

tiboy.tistory.com

작성일을 보니 2년이 훌쩍 지나버렸네요. 게으른 개발자입니다.

사실 다른 프로젝트로 옮겨 다니다 보니 jQuery 사용을 하지 않아서 잠깐 관심을 못가졌던겁니다.

그런데 제목을 보면 $와 $()에 대한 이야기로 되어 있는데요. 둘이 같은 거 아닌가요?

우리가 보통 jQuery를 사용할 때는 $()를 사용합니다.

아래 remove() 같은 메서드들은 jQuery 객체에서 호출되는데 $.fn 네임스페이스 또는 jQuery prototype이라고 하는데 jQuery 객체 메서드로 이해하는 것이 좋겠네요.

$("p").remove(); 

그럼 $는 무엇일까요?

$.trim();

위 소스를 보면 $에 ()가 없습니다. 그리고 바로 메서드를 호출합니다.

$('p') 객체에 jQuery메서드인 remove()를 실행한다는 의미의 $()와는 다르게 $는 core jQuery methods(코어 jQuery 메서드) 즉, utility method를 호출할 때 사용한다고 생각하면 됩니다.

바로 $.trim() 같은 경우입니다.

jQuery는 $ namespace로 여러 유틸리티 메서드들을 제공하고 있습니다.

일반적인 유형의 프로그래밍을 할 때 유용하게 사용할 수 있습니다.

특정한 DOM 객체를 지정해서 jQuery 메서드를 작동시키는 것과 달리$ namesapce 방식은 일반적은 데이터를 가지고 활용할 수 있습니다.

$.trim()으로 간단한 예제를 만들어보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
    <head>
        <title>tiBoyTest</title>        
        <script src="js/jquery-3.7.0.min.js"></script>
    </head>
    <body>
        <div id="test1">Test jQuery</div>
        
        <script>
            $(document).ready(function(){
                var a = '  asdfdf   ';
                alert(a);
                alert($.trim(a));
            });
        </script>
    </body>
</html> 
cs

 

위 예제를 보면 변수 a에 앞 뒤로 공백을 넣은 문자열 리터럴 값을 할당했습니다.

그리고 alert(a)를 하면 공백이 포함된 값이 팝업으로 뜹니다.

alert 창이 뜨면 'asdfdf' 글자 위에 마우스 우클릭 후 전체 선택을 하면 공백이 포함되었음을 확인할 수 있어요.

두 번째 alert($.trim(a))은 $ namespace로 utility 메서드인 trim()을 호출했습니다.

특정 DOM 객체 없이 변수값으로 메서드를 실행했고 결과는 앞 뒤에 있는 공백이 사라지게 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
    <head>
        <title>tiBoyTest</title>        
        <script src="js/jquery-3.7.0.min.js"></script>
    </head>
    <body>
        <div id="test1">Test jQuery</div>
        
        <script>
            $(document).ready(function(){
                debugger; 
                var myArray = [ 1234 ];
 
                if ( $.inArray( 4, myArray ) !== -1 ) {
                    console.log( "값이 존재함." );
                }
            });
        </script>
    </body>
</html> 
cs

 

하나 더 예를 들어 봅니다.

$.inArray 는 배열 내 지정한 값이 있으면 해당 index를 리턴합니다. 만약 일치하는 값이 없으면 -1을 리턴합니다.

위 예제를 보면 배열 내 값 4가 존재하므로 콘솔에 '값이 존재함'을 출력합니다.

정리하면,

jQuery에서 $기호는 jQuery를 단축 기호를 의미합니다.

$()는 $.fn 으로 DOM 객체를 선택하고 그 객체에 jQuery 메서드를 실행할 수 있게 합니다.

반면, $ namespace는 jQuery 내 유틸리티 메서드 (코어 메서드)를 실행할 때 사용합니다.

 

우리는 이제 jQuery에서 $와 $()를 이해했고 구분해서 사용할 수 있게 되었습니다.

utility methods는 jQuery 사이트에서 확인해 볼 수 있습니다.

슬슬 재미있어집니다.

반응형