一、使用Promise封装ajax请求
<!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>封装ajax</title>
</head>
<body>
<script>
function sendAjax(url, type) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open(type, url);
xhr.send();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status >= 200 && xhr.status < 300) {
resolve(xhr.response);
} else {
reject(xhr.status);
}
}
}
});
}
sendAjax('http://localhost:2000/server', 'get').then((
data) => { console.log(data) },
(err) => { console.log(err) }
);
</script>
</body>
</html>
二、使用Promise封装文件读取操作
/*
封装一个函数mineReadFile 读取文件内容
参数:path,文件路径
返回:promise对象
*/
function mineReadFile(path) {
return new Promise((resolve, reject) => {
// 读取文件
require("fs").readFile(path, (err, data) => {
// 判断是否读取成功
if (err) reject(err);
resolve(data);
});
// .then(
// (data) => {
// console.log(data)
// },
// (err) => {
// console.log(err);
// }
// );
})
}
mineReadFile("./resource/readme.txt").then(
(data) => { console.log(data.toString()) }, (err) => { console.log(err) })
三、以上方法需要的server代码
// 1. 初始化
npm init -y
// 2. 安装express
npm i express
// 3. 编写代码
// 引入express
const express = require("express");
// 创建express对象
const app = express();
// 方法
app.all('/server',(request,response)=>{
response.setHeader("Access-Control-Allow-Origin","*");
response.send("hello world!");
})
// 监听2000
app.listen(2000,()=>{
console.log("服务器已启动,正在监听2000端口...");
})
// 4. 启动服务
node filename.js
四、util.promisify()方法
/*
util.promisify 方法
返回的是一个promise对象
*/
const util = require('util');
const fs = require('fs');
let mineReadFile = util.promisify(fs.readFile);//将fs.readFile函数promise化。
mineReadFile('./resource/readme.tt').then((value) => {
console.log(value.toString());//错误和成功都在这个回调里
})