🧡 Promise


Category : Javascript

function isPositivePromise(number) {
  const excutor = (resolve, reject) => {
    setTimeout(() => {
      if (typeof number === 'number') {
        resolve(number >= 0 ? '양수' : '음수');
      } else {
        reject('주어진 값이 숫자가 아닙니다.');
      }
    }, 2000);
  };

  const asyncTask = new Promise(excutor);
  return asyncTask;
}

const result = isPositivePromise(10);
result.then((res) => {
		// resolve
    console.log('작업 성공 : ', res);
  }).catch((err) => {
		// reject
    console.log('작업 실패 : ', err);
  });
function A(a) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const resA = a + 2;
      resolve(resA);
    }, 3000);
  });
}

function B(a) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const resB = a * 3;
      resolve(resB);
    }, 2000);
  });
}

function C(a) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      const resC = a * -1;
      resolve(resC);
    }, 1000);
  });
}

// 결과를 resultB에 저장하고
const resultB = A(2).then((resA) => {
    console.log('A result : ', resA);
    return B(resA);
 });

// somthing another code //

// 다른 작업을 처리한 후 불러와서 사용할 수 있다.
resultB.then((resB) => {
    console.log('B result : ', resB);
    return C(resB);
}).then((resC) => {
    console.log('C result : ', resC);
});

🧡 sync & async


Category : Javascript

function A(a, cb) {
  setTimeout(() => {
    const resA = a + 2;
    cb(resA);
  }, 3000);
}

function B(b, cb) {
  setTimeout(() => {
    const resB = b * 3;
    cb(resB);
  }, 2000);
}

function C(c, cb) {
  setTimeout(() => {
    const resC = c * -1;
    cb(resC);
  }, 1000);
}

A(2, (resA) => console.log('A result : ', resA)); // (1)
B(2, (resB) => console.log('B result : ', resB));
C(2, (resC) => console.log('C result : ', resC));
console.log('end!');
/* end!
C result :  -2
B result :  6
A result :  4 */
...

A(2, (resA) => {
  console.log('A result : ', resA);
  B(2, (resB) => {
    console.log('B result : ', resB);
    C(2, (resC) => {
      console.log('C result : ', resC);
    });
  });
});
console.log('end!');
/* end!
A result :  4
B result :  6
C result :  -2 */