持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
一。回调地狱
回调函数嵌套回调函数, 我们称之为回调地狱
promise 从语法上说,它是一个构造函数,解决回调地狱的问题.
本质上讲,promise 是一个返回的对象,您将回调附加到该对象,而不是将回调传递给函数
let pro = new Promise(function (resolve, reject) {
resolve(1)
// then()对应resolve 成功参数
}).then(res => {
console.log("获取成功" + res)
reject(2)
// catch()对应的是reject失败的参数
}).catch(reg => {
console.log("获取失败" + reg)
// finally(),不管成不成功我都执行
}).finally(() => {
console.log("我都执行,我包容性很强,finally(),不管成不成功,我都执行")
})
一般情况下只写一个成功的参数。
封装promise
let fs = require("fs")
//读取文本数据
function readF(url) {
return new Promise(resolve => {
fs.readFile(url, (err, r) => {
resolve(r.toString())
})
})
}
// 简化封装 关键字 async 定义异步函数
async function funR() {
// await 关键字 简化 .then()获取结果的过程
let p = await readF("./province.txt")
if (p !== "江苏省") {
return
};
let c = await readF("./city.txt")
if (c !== "南京市") {
return
};
let d = await readF("./district.txt")
console.log(d)
}
funR()
readF("./city.txt").then(p=>{
console.log(p)
})
readF("./province.txt").then(p=>{
if(p=="江苏省"){
return readF("./city.txt")
}
}).then(c=>{
if(c=="南京市"){
return readF("./district.txt")
}
}).then(t=>{
console.log(t)
})
二。Express框架
是一个基于node平台的web应用开发框架,他提供了一系列的强大特性,帮助创建各种web应用 基于node.js平台,快速,开放,极简的web开发框架
express 是基于 内置模块的http进一步封装出来的,内置模块http虽然也可以创建服务器,但是复杂,开发效率低,而express 能够极大的提高开发效率
作用:
可以方便,快捷的创建web网站的服务器或API接口的服务器
web网站服务器:专门对外提供web网页浏览器的服务器
API接口服务器: 专门对外提供API接口的服务器
创建一个js
//1.导入express框架
let express=require("express")
// 2.创建web服务
let app=express()
// 3.调用接口,启动服务器,监听一个端口号
app.listen(8080,()=>{
// 测试时请保证服务器是打开的状态,如果当前页面内容进行了修改,请一定重新运行服务器
console.log("服务器开启成功,端口号是8080,测试网址是:127.0.0.1")
})
// 4.监听客户端的请求,get/post
app.get("/listA",(req,res)=>{
console.log("这是客户端请求的内容")
// res.send("哇哦,真棒")
// send()是向客户端相应一个json文件
res.send({name:"张三",age:34,sex:"男",class:"kw_52"})
})
// 获取url参数
app.get("/",(req,res)=>{
// req.query 访问客户端发送过来的查询参数,默认是一个空对象
console.log(req.query)
res.send(req.query)
})
使用express创建一个json文件
let express=require("express")
let app=express()
app.listen(8080,(res,req)=>{
console.log("服务器已经启动,")
})
app.get("/user",(req,res)=>{
//创建的数据
res.send(arr_user)
})
let arr_user=[
{
name:"yy",
age:23,
sex:"m"
},
{
name:"ss",
age:23,
sex:"m"
}, {
name:"qq",
age:23,
sex:"f"
}, {
name:"mm",
age:23,
sex:"f"
}
]
127.0.0.1是回送地址,本地机
8000代表服务器端口
查询数据:127.0.0.1:(端口号)/地址名