基本使用
Promise封装读取文件
Promise封装AJAX请求
const p = new Promise((resolve,reject) => {
// 1. 创建对象
const xhr = new XMLHttpRequest();
// 2. 初始化
xhr.open("GET","https://api.apiopen.top/getJoke");
// 3. 发送
xhr.send();
// 4. 绑定事件,处理响应结果
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status <= 300) {
resolve(xhr.response);
} else {
reject(xhr.status);
}
}
}
});
p.then(function(value) {
console.log(value);
},function(reason) {
console.log(reason);
});
Promise.prototype.then 方法
then方法的返回值分以下三种情况:
- 返回非Promise对象
- 返回Promise对象(resove状态)
- 返回Promise对象(reject状态)
Promise对象的catch方法
此方法是当Promise对象的状态为reject时,调用的方法,参数只是一个函数。
使用Promise读取三个文件中的内容
// 首先,引入fs模块
const fs = require('fs');
const p = new Promise((resolve,reject) => {
fs.readFile("./test.md",(err,data) => {
resolve(data);
});
});
p.then((value) => {
return new Promise((resolve,reject) => {
fs.readFile("./木言人.md",(err,data) => {
resolve([value,data]);
});
});
}).then((value) => {
return new Promise((resolve) => {
fs.readFile("./读书有感.md",(err,data) => {
value.push(data);
resolve(value);
});
});
}).then((value) => {
console.log(value.toString());
});