基础用法
const p = new Promise(function (resolve, reject) {
setTimeout(function () {
let data = '数据库中的数据';
resolve(data);
}, 1000);
});
p.then(function (value) {
console.log(value);
}, function (reason) {
console.log(reason);
})
读文件
const fs = require('fs');
// fs.readFile('文字.txt', (err, data) => {
// if (err) throw err;
// console.log(data.toString());
// });
// 使用 promise 封装
const p = new Promise(function (resolve, reject) {
fs.readFile('文字.txt', (err, data) => {
if (err) reject(err);
resolve(data);
});
});
p.then(function (value) {
console.log(value.toString());
}, function (reason) {
console.log(reason);
});
then 的使用
- then 方法的返回结果如果是 Promise 对象,对象状态由回调函数的执行结果决定。
- 如果回调函数中返回结果是非 Promise 类型熟悉,状态为成功,返回值为对象的成功的值。
const p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('用户数据');
// reject('出错啦');
}, 1000);
});
// then 方法的返回结果如果是 Promise 对象,对象状态由回调函数的执行结果决定
// 如果回调函数中返回结果是非 Promise 类型熟悉,状态为成功,返回值为对象的成功的值
const result = p.then(value => {
console.log(value);
return 123;
}, reason => {
console.log(reason);
});
console.log(result);
解决回调地狱的问题
const fs = require('fs');
// fs.readFile('文字.txt', (err, datat) => {
// fs.readFile('测试.txt', (err, datae) => {
// fs.readFile('内容.txt', (err, datac) => {
// let result = datat + datae + datac;
// console.log(result.toString());
// });
// });
// });
const p = new Promise((resolve, reject) => {
fs.readFile('文字.txt', (err, data) => {
resolve(data);
});
});
p.then(value => {
return new Promise((resolve, reject) => {
fs.readFile('测试.txt', (err, data) => {
resolve([value, data]);
});
});
}).then(value => {
return new Promise((resolve, reject) => {
fs.readFile('内容.txt', (err, data) => {
value.push(data);
resolve(value);
});
});
}).then(value => {
console.log(value.join('\r\n'));
});
catch
const p = new Promise((resolve, reject) => {
setTimeout(() => {
// 修改状态为失败,并设置失败值
reject('出错啦!');
}, 1000);
});
// p.then(function (value) {
// }, function (reason) {
// console.error(reason);
// });
p.catch(reason => {
console.warn(reason);
});
更多精彩内容:各种AI课程、技能课程、黑科技软件、网站小程序源码、副业小项目、PPT模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。