[JavaScript] 비동기

노호준·2023년 1월 18일
0

비동기

: 하나의 작업이 온전히 끝나지 않아도 다른 작업이 진행되는 방식
자바스크립트가 구동하는 환경을 런타임환경이라 하는데,js는 동기적인데 런타임에서 비동기처리를 대신해주기때문에 유튜브보는동시에 다운도 하고 공유도하고 가능

그런데 끝나는 순서를 순서대로 받고싶다. 처음엔 콜백함수로 해결했는데 너무 코드 가독성이 구려진다.

Promise

성공하면 resolve, 실패하면 reject로 값을 전달, 성공하면 .then으로, 실패하면 .catch로 값을 받게 된다. promise 에서 resolve('성공') 에 들어가는 '성공'이 then의 value로 간다.

promiseall로 하면 1초코드, 2초코드, 3초걸리는 코드 동시에 실행해준다.

async/await는 실용성이 매우좋다.
then에서 받는 value는 전에서 return된 값이다. 문자열이든 뭐든

과제1

  • Promise 실행 함수가 가지고 있는 두 개의 파라미터 resolve 와 reject 는 각각 무엇을 의미하나요?
let promise = new Promise((resolve, reject) => {
	resolve("성공");
});

promise.then(value => {       // value는 resolve()사이에 있는 "성공"이 
	console.log(value);
	// "성공"
})

=> resolve : 이행, then으로 결과값을 받을 수 있다., reject: 실패
성공 / 실패했을때 실행되는 콜백함수

  • resolve, reject함수에는 전달인자를 넘길 수 있습니다. 이때 넘기는 전달인자는 어떻게 사용할 수 있나요?
    => 성공하면 .then(첫번째인자,두번째인자) 실패하면 catch
let promise = new Promise(function(resolve, reject) {
  setTimeout(() => reject(new Error("에러 발생!")), 1000);
});

// reject 함수는 .then의 두 번째 함수를 실행합니다.
promise.then(
  result => alert(result), // 실행되지 않음
  error => alert(error) // 1초 후 "Error: 에러 발생!"을 출력, reject여서 두번째인자가 발동
);
</script>
  • Promise.prototype.then 메서드는 무엇을 리턴하나요?
    promise 객체
  • Promise의 세 가지 상태는 각각 무엇이며, 어떤 의미를 가지나요?
    -> pending fulfilled rejected
  • await 키워드 다음에 등장하는 함수 실행은 어떤 타입을 리턴할 경우에만 의미가 있나요?
    => promise 객체
  • await 키워드를 사용할 경우, 어떤 값이 리턴되나요?
    => 프로미스 객체의 result 값
  • new Promise()를 통해 생성한 Promise 인스턴스에는 어떤 메서드가 존재하나요? 각각은 어떤 용도인가요?
    => then(성공,실패), catch(실패한경우만 다룸), finally(성공실패상관없이 실행됨)
  • bind를 쓴 이유는 전달인자를 넣을수 없어서 넣은것이다.
let promise = new Promise(function (resolve, reject) {
  resolve('성공');
  // reject("실패");
});

promise
  .then((value) => {
    console.log(value);
    return '성공';
  })
  .then((value) => {
    console.log(value);
    return '성공';
  })
  .then((value) => {
    console.log(value);
    return '성공';
  })
  .catch((error) => {
    console.log(error);
    return '실패';
  })
  .finally(() => {
    console.log('성공이든 실패든 작동!');
  });
  1. await 키워드 다음에 등장하는 함수 실행은 어떤 타입을 리턴할 경우에만 의미가 있나요?
async function funcDeclarations() {
	await 작성하고자 하는 코드
	...
}

Node.js

  • 내장모듈사용법 : 내장모듈의 메서드 쓰려면 js코드 가장 상단에 require구문으로 다른 파일을 불러옴
const fs = require('fs'); // 파일 시스템 모듈을 불러옵니다
const dns = require('dns'); // DNS 모듈을 불러옵니다

// 이제 fs.readFile 메서드 등을 사용할 수 있습니다!
  • 서드파티 모듈 사용법
    먼저 설치한다. npm install underscore
    그다음 똑같이
    const _ = require('underscore')

0개의 댓글

관련 채용 정보