Sử dụng Sync - Await để áp dụng tính bài toán Diện tích hình thang
// Phep Cong
var add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a !== 'number' || typeof b !== 'number') {
return reject(
new Error('Tham so truyen vao phai kieu Number - PHEPCONG')
);
}
return resolve(a + b);
}, 100);
});
};
// Phep Nhan
var multiply = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a !== 'number' || typeof b !== 'number') {
return reject(
new Error('Tham so truyen vao phai kieu Number - PHEPNHAN')
);
}
return resolve(a * b);
}, 100);
});
};
// Phep Chia
var divide = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a !== 'number' || typeof b !== 'number') {
return reject(
new Error('Tham so truyen vao phai kieu Number - PHEPCHIA')
);
} else if (b === 0) {
return reject(new Error('Tham so truyen vao phai khac 0 - PHEPCHIA'));
}
return resolve(a / b);
}, 1000);
});
};
var dienTichHinhThang = async (a, b, c) => {
var ab = await add(a, b);
var ah = await multiply(ab, c);
var result = await divide(ah, 2);
return result;
};
dienTichHinhThang(2, 3, 4)
.then((res) => console.log('Dien tich hinh thang: ', res))
.catch((err) => console.log(err + ''));
// Dien tich hinh thang: 10
var dienTichHinhThang = async (a, b, c, callBack) => {
try {
var ab = await add(a, b);
var ah = await multiply(ab, c);
var result = await divide(ah, 2);
return callBack(undefined, result);
} catch (err) {
return callBack(err);
}
};
dienTichHinhThang(2, 3, 4, (err, res) => {
if (err) {
return console.log(err + '');
}
console.log('Dien tich hinh thang: ', res);
});