Promise
Promise是ES6引入的一个异步操作全新解决方案
写法:
// 实例化Promise对象
const p = new Promise(function (resolve,reject) {
setTimeout(() => {
let data = '数据库中的用户数据';
// 业务成功,调用 resolve 方法后,Promise对象的状态就会变为成功 resolved 或 fulfilled
// resolve(data);
// 业务失败,调用 reject 方法后,Promise对象的状态变为失败 rejected
let err = '数据读取失败'
reject(err)
}, 1000);
})
// 调用 Promise 对象的 then 方法
p.then(function(value) {
// 如果在异步操作中调用了 resolve 方法,则then方法中,执行第一个函数
console.log(value);
},function(reason) {
// 如果在异步操作中调用了 reject 方法,则then方法中,执行第二个函数
console.error(reason)
})
示例:读取文件
let fs = require('fs');
// fs.readFile('./悯农.md',(err,data)=>{
// if (err) throw err;
// console.log(data.toString());
// })
// 使用Promise封装读取文件操作
const p = new Promise(function (resolve, reject) {
fs.readFile('./悯农.md', (err, data) => {
// 如果失败
if (err) reject(err)
// 如果成功
resolve(data.toString())
})
})
p.then(function (value) {
console.log(value)
}, function (reason) {
console.error(reason)
})