2.promise:::
const fs = require(‘fs’)
let promise = new Promise((resolve, reject) => {
fs.readFile(’./100.txt’, ‘utf8’, (error, result) => {
// 如果成功了,调用resolve把结果返回给promise外面
// 如果失败了,调用reject把错误返回给promise外面
if (error != null) {
reject(error)
} else {
resolve(result)
}
})
});
// 当异步api执行成功的时候调用resolve , 调用resolve实际上就是在调用then里面的回调函数
promise.then(result => {
console.log(result);
}).catch(error => {
console.log(error);
})
promise解决回调地狱问题
const fs = require(‘fs’)
function f1() {
let promise = new Promise((resolve, reject) => {
fs.readFile(’./1.txt’, ‘utf8’, (error, result) => {
resolve(result)
})
})
return promise;
}
function f2() {
let promise = new Promise((resolve, reject) => {
fs.readFile(’./2.txt’, ‘utf8’, (error, result) => {
resolve(result)
})
})
return promise;
}
function f3() {
let promise = new Promise((resolve, reject) => {
fs.readFile(’./3.txt’, ‘utf8’, (error, result) => {
resolve(result)
})
})
return promise;
}
f1().then(result => {
console.log(result);
return f2()
}).then(result => {
console.log(result);
return f3();
}).then(result => {
console.log(result);
})
3.普通函数定义前加async就变成了异步函数, 异步函数返回promise对象
await只能出现在异步函数中 await后面要跟promise对象,用于暂停异步函数向下执行,知道promise返回结果
4.node中所有对数据库的操作都是异步操作
MongoDB数据库导入数据:
mongoimport -d 数据库名称 -c 集合名称 --file 要导入的数据所在文件路径
向模板中导入变量 : template.defaults.imports.变量名 = 变量值
设置模板跟目录:template.defaults.root =
配置模板默认后缀:template.defaults.extname =
serve-static第三方模块,实现静态资源访问服务
// 告诉express框架使用什么模板引擎渲染什么后缀的模板文件
app.engine(‘art’, require(‘express-art-template’))
// 告诉express框架模板存放的位置
app.set(‘views’, path.join(__dirname, ‘views’))
// 告诉express框架模板的后缀
app.set(‘view engine’, ‘art’)
req.send()方法默认是设置200状态码