Promise初体验
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>promise体验</title>
</head>
<body>
<button id="btn">抽奖按钮</button>
<script>
function rand(m, n) {
return Math.ceil(Math.random() * (n - m + 1) + m - 1);
}
const btn = document.getElementById("btn");
// 1. 通过setTimeout实现
/*btn.addEventListener("click", function () {
setTimeout(() => {
if (n < 30) {
console.log("恭喜你中奖了", n);
} else {
console.log("再接再厉!", n);
}
}, 2000);
})*/
// 2. 通过Promise实现
btn.addEventListener("click", function () {
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
let n = rand(1, 100);
if (n < 30) {
resolve(n);// 将promise对象的状态设置为【成功】
} else {
reject(n);//将promise对象的状态设置为【失败】
}
}, 2000);
});
promise.then(
(n) => {//resolve
console.log("恭喜你中奖了", n);
},
(n) => {//reject
console.log("再接再厉!", n);
});
})
</script>
</body>
</html>
// Promise初体验 - 读取文件内容
// node filename.js
const fs = require("fs");
// 1. 回调函数形式
// fs.readFile("./resource/readme.txt", (err, data) => {
// if (err) throw err;
// console.log(data.toString());
// });
// 2. Promise
let promise = new Promise((resolve, reject) => {
fs.readFile("./resource/readme.txt", (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
})
promise.then(
(data) => {//resolve
console.log(data.toString());
},
(err) => {//reject
throw err;
}
);