Javascript

ECMAScrip(에크마 스크립트), Ajax

728x90
반응형

Ajax

동기
--1이 완료해야 2를 완료하고 2가 완료해야 3이 실행된다.
그래서 1이 되어야 2가 되고 2가 되어야 c가된다.

비동기
--동기작업이 오래걸린다면 비동기 방식이 더 좋다.
--1이 되던말던 2도 실행하고 2가 되던말던 3이 실행된다.


웹 환경에서 비동기를 사용할때는 웹소켓아니면 ajax를 사용한다.


웹소켓은 서버와의 연결이 길어야하면 쓰고, 짧으면 ajax를 쓴다.


처음에는 xml을 썻는데, 메타태그가 많아서 무거워지다보니, json을 쓰기 시작함

 

 

Arrow function - 화살표 함수

공부하러가기 

// 매개변수 지정 방법
    () => { ... } // 매개변수가 없을 경우
     x => { ... } // 매개변수가 한 개인 경우, 소괄호를 생략할 수 있다.
(x, y) => { ... } // 매개변수가 여러 개인 경우, 소괄호를 생략할 수 없다.

// 함수 몸체 지정 방법
x => { return x * x }  // single line block
x => x * x             // 함수 몸체가 한줄의 구문이라면 중괄호를 생략할 수 있으며 암묵적으로 return된다. 위 표현과 동일하다.

() => { return { a: 1 }; }
() => ({ a: 1 })  // 위 표현과 동일하다. 객체 반환시 소괄호를 사용한다.

() => {           // multi line block.
  const x = 10;
  return x * x;
};

 

 

ECMAScrip(에크마 스크립트)의 Ajax

비동기 정보를 가져오려면 콜백함수를 다시 가져와야 함, 그때 콜백이 정말 많이 나옴 그래서 이런 방식이 생겨남

const getAjax = function(url, keyfield, keyword) {
     // resolve, reject는 자바스크립트에서 지원하는 콜백 함수이다.
     return new Promise( (resolve, reject) => {
         $.ajax({                        
             url: url,
             method: 'POST',
             dataType: 'json',
             data: {
              	keyfield: keyfield,
             	keyword: keyword
             },
             success: function(data) {                    	
                 resolve(data);
             }, 
             error: function(e) {                    	
                 reject(e);
             }
         });
     });
 }

Promise

안에있는 코드는 모두 비동기적 작업을 한다.

기본적으로 perdine상태

성공하면 fullfiled

실패하면 reject

 

Promise( (resolve, reject) )

resolve는 성공했을 때 콜백함수, reject는 실패했을 때 콜백함수임

 

async

해당 함수가 비동기를 포함하는 함수를 사용한다.

 

await 비동기처리메소드();

await 다음에는 비동기와 관련된 로직이 와야함

즉, 비동기처리메소드()는 promise 로 만들어진 함수의 resolve콜백함수 값을 가져온다.

무한정 기다릴수 없으니까  await를 작성해줌으로써 "완료되면 가져와라!"라고 명시해준 것 

 

 

728x90
반응형