khoa-pham-async-await

Callback


1. Ví dụ: Tính diện tích hình thang

var square = (a, b, h) => ((a + b) * h) / 2;
console.log('Dien tich: ', square(2, 3, 2));

2. Mô phỏng bất đồng bộ

let add = (a, b, callBack) => {
  setTimeout(() => {
    let error, result;
    if ((typeof a != 'number') | (typeof b != 'number')) {
      error = 'Kiểm tra giá trị nhập vào!';
      return callBack(error, result);
    }
    result = a + b;
    return callBack(error, result);
  }, 1000);
};

add(2, `3`, (err, res) => {
  if (err) {
    return console.log('Loi: ' + err);
  }
  console.log('Ket qua: ' + res);
});
let add = (a, b, callBack) => {
  setTimeout(() => {
    if ((typeof a != 'number') | (typeof b != 'number')) {
      return callBack('Kiểm tra giá trị nhập vào!');
    }
    return callBack(undefined, a + b);
  }, 1000);
};

add(2, `3`, (err, res) => {
  if (err) {
    return console.log('Loi: ' + err);
  }
  console.log('Ket qua: ' + res);
});
let add = (a, b, callBack) => {
  setTimeout(() => {
    if ((typeof a != 'number') | (typeof b != 'number')) {
      return callBack(new Error('Tham so phai có kieu number.'));
    }
    return callBack(undefined, a + b);
  }, 1000);
};

add(2, `3`, (err, res) => {
  if (err) {
    return console.log('Loi: ' + err);
  }
  console.log('Ket qua: ' + res);
});
// var square = (a, b, h) => ((a + b) * h) / 2;
// console.log('Dien tich: ', square(2, 3, 2));

// Phép Cộng
let add = (a, b, callBack) => {
  setTimeout(() => {
    if ((typeof a != 'number') | (typeof b != 'number')) {
      return callBack(new Error('Tham so phai có kieu number.'));
    }
    return callBack(undefined, a + b);
  }, 1000);
};

// Phép Nhân
let multiply = (a, b, callBack) => {
  setTimeout(() => {
    if ((typeof a != 'number') | (typeof b != 'number')) {
      return callBack(new Error('Tham so phai có kieu number.'));
    }
    return callBack(undefined, a * b);
  }, 1000);
};

// Phép Chia
let divide = (a, b, callBack) => {
  setTimeout(() => {
    if ((typeof a != 'number') | (typeof b != 'number')) {
      return callBack(new Error('Tham so phai có kieu number.'));
    }
    if (b == 0) {
      return callBack(new Error('So bi chia phai khac 0.'));
    }
    return callBack(undefined, a / b);
  }, 1000);
};

// Tính Diện tích hình thang

let square = (a, b, c, cb) => {
  add(a, b, (err1, res1) => {
    if (err1) return cb(err1);
    multiply(res1, c, (err2, res2) => {
      if (err2) return cb(err2);
      divide(res2, 2, (err3, res3) => {
        if (err3) return cb(err3);
        return cb(undefined, res3);
      });
    });
  });
};

// Diện tích hình thang
square(2, 3, 3, (err, res) => {
  if (err) {
    return console.log('Loi: ' + err);
  }
  console.log('Dien tich: ' + res);
});