基本使用
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对象的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()); });
Promise.allSettled()方法
- 参数是一个数组。
- 这个数组的每一个元素都是一个Promise对象
- 该方法返回的始终是一个成功的Promise对象,这个对象的结果包含了参数数组中的每一个Promise对象的返回状态和值。