let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(new Error('Tham số truyền vào phải là kiểu number!'));
}
resolve(a + b);
}, 1000);
});
};
let aPromise = Promise.resolve(4);
console.log(aPromise);
// Promise { 4 }
let a = add(0, 4).then((rs) => rs);
let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(new Error('Tham số truyền vào phải là kiểu number!'));
}
resolve(a + b);
}, 1000);
});
};
let aPromise = Promise.resolve(add(4, 5));
console.log(aPromise);
// Promise { <pending> }
Pending
, vì là trạng thái Pending
nên ta có thể xử lý trạng thái trả về .then
hoặc .catch
để handle xử lý.let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(new Error('Tham số truyền vào phải là kiểu number!'));
}
resolve(a + b);
}, 1000);
});
};
let aPromise = Promise.resolve(add(4, 5));
// console.log(aPromise); // Promise { <pending> }
aPromise.then((res) => console.log(res));
// 9 : Trả về hiển thị kết quả của add(4,5)
let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(new Error('Tham số truyền vào phải là kiểu number!'));
}
resolve(a + b);
}, 1000);
});
};
let rPromise = Promise.reject('Bị lỗi');
console.log(rPromise);
//Promise { <rejected> 'Bị lỗi' }
// (node:9016) UnhandledPromiseRejectionWarning: Bị lỗi
Promise
bị rejected
, nên ta có thể handle xử lý .catch
hoặc .error
để hứng lấy kết quả trả về từ Promise
này.let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(new Error('Tham số truyền vào phải là kiểu number!'));
}
resolve(a + b);
}, 1000);
});
};
// handle bằng .catch khi error
let rPromise = Promise.reject('Bị lỗi');
rPromise.catch((er) => console.log(er + ''));
console.log(rPromise);
// Promise { <rejected> 'Bị lỗi' }
// Bị lỗi
// handle bằng .then khi error
let rPromise = Promise.reject('Bị lỗi');
rPromise.then(
(res) => console.log(res),
(er) => console.log(er + '')
);
console.log(rPromise);
// Promise { <rejected> 'Bị lỗi' }
// Bị lỗi
.then(res,error)
hoặc .catch(error)
// File server.js
let express = require('express');
let app = express();
app.listen(3000);
app.set('view engine', 'ejs');
app.set('views', './views');
app.get('/', (req, res) => {
res.render('home');
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Lập trình Nodejs: Xử lý bất đồng bộ trong Javascript</title>
<style>
body {
height: 100vh;
background: linear-gradient(to top left, #28b487, #7dd56f);
}
h1 {
text-align: center;
color: white;
}
</style>
<script type="text/javascript">
let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(
new Error('Tham số truyền vào phải là kiểu number!')
);
}
resolve(a + b);
}, 2000);
});
};
</script>
</head>
<body>
<h1>Lập trình Nodejs: Xử lý bất đồng bộ trong Javascript</h1>
<h2>Phương thức resolve và reject</h2>
</body>
</html>
<script type="text/javascript">...</script>
let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(new Error('Tham số truyền vào phải là kiểu number!'));
}
resolve(a + b);
}, 1000);
});
};
let aPromise = Promise.resolve(4);
console.log(aPromise);
// Promise { 4 }
let add = (a, b) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (typeof a != 'number' || typeof b != 'number') {
return reject(new Error('Tham số truyền vào phải là kiểu number!'));
}
resolve(a + b);
}, 2000);
});
};
let aPromise = Promise.resolve(add(4, 5));
console.log(aPromise);
let rPromise = Promise.reject('Bị lỗi.');
console.log(rPromise);
let rPromise = Promise.reject('Bị lỗi.');
rPromise.catch((err) => console.log(err));
console.log(rPromise);
let rPromise = Promise.reject(add(4, '5'));
rPromise
.then(
(res) => res,
(err) => console.log(err)
)
.catch((err) => console.log(err));
console.log(rPromise);
Phương thức all và race
để có thể kiểm soát handle nhiều Promise cùng lúc xử lý bất đồng bộ.