Promise catch方法 读取多个文件 封装ajax 请求
--------------
基础
const p = new Promise(function(resolve,reject){
setTimeout(() => {
// let data = '数据库中的用户数据';
// resolve(data);
let err = '数据读取失败';
reject(err)
}, 1000);
});
p.then(function(value){
console.log(value);
},function(reason){
// console.log(reason);
console.error(reason);
})
----------------------
// 引入 fs 模块
const fs = require('fs');
// 2 调用方法读取文件
// fs.readFile('./test.md',(err,data)=>{
// // 如果 出错 则抛出错误
// if(err) throw err;
// // 如果没出错, 则输出内容
// console.log(data.toString());
// })
// 3 使用 Promise 封装
const p = new Promise(function(resolve,reject){
fs.readFile('./test.m3d',(err,data)=>{
// 如果 出错 则抛出错误
if(err) reject(err);
// 如果没出错, 则返回内容
resolve(data);
})
})
p.then(function(value){
console.log(value.toString());
},function(reason){
console.log(reason);
console.log('读取失败');
})
--------------------------------
封装ajax 请求
// 接口地址: https://api.apiopen.top/getJoke
// // 1 创建对象
// const xhr = new XMLHttpRequest();
// // 2 初始化
// xhr.open("GET","https://api.apiopen.top/getJo3ke");
// // 3 发送
// xhr.send();
// // 4 绑定事件 处理响应结果
// xhr.onreadystatechange = function(){
// // 判断状态
// if(xhr.readyState === 4){
// // 判断响应状态码 200 - 299
// if(xhr.status >= 200 && xhr.status < 300){
// // 表示成功
// console.log(xhr.response);
// }else{
// console.error(xhr.status);
// }
// }
// }
//promise 封装
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){
// 判断响应状态码 200 - 299
if(xhr.status >= 200 && xhr.status < 300){
// 表示成功
// console.log(xhr.response);
resolve(xhr.response)
}else{
// console.error(xhr.status);
reject(xhr.status)
}
}
}
})
// 指定回调
p.then(function(value){
console.log(value);
},function(reason){
console.error(reason);
})
-------------------------------------
promise-读取多个文
const fs = require('fs');
// fs.readFile('./test.md',(err,data1)=>{
// fs.readFile('./test2.md',(err,data2)=>{
// fs.readFile('./test3.md',(err,data3)=>{
// let result = data1 + '\r\n' + data2 + '\r\n' + data3;
// console.log(result);
// })
// })
// })
// 使用 promise 实现
const p = new Promise((resolve, reject)=>{
fs.readFile('./test.md',(err,data)=>{
resolve(data)
})
})
p.then(value=>{
return new Promise((resolve,reject)=>{
fs.readFile('./test2.md',(err,data)=>{
resolve([value,data])
})
})
}).then(value=>{
return new Promise((resolve,reject)=>{
fs.readFile('./test3.md',(err,data)=>{
value.push(data);
resolve(value);
})
})
}).then(value=>{
// console.log(value.toString());
console.log(value.join('\r\n'));
})
// console.log(value.toString());
-------------
catch方法
const p = new Promise((resolve,reject)=>{
setTimeout(() => {
// 设置 p 对象 的状态为失败 并设置 失败的值
reject("出错了")
}, 1000);
})
// p.then(function(value){},function(reason){
// console.error(reason);
// })
p.catch(function(reason){
console.warn(reason);
})
我是Eric,手机号是13522679763

浙公网安备 33010602011771号