promise使用
基本使用
// new 做了什么 // 1. 创建一个新的空对象 // 2. 将构造函数中的this指向这个新空对象 // 3. 执行构造函数中的代码 // 4. 返回这个对象 // 5. 这个对象上有一个__proto__指向构造函数的原型 var promise = new Promise((resolve, reject) => { var flag = false if (flag) return resolve() reject() }) promise.then((res) => { var a = '成功回调' console.log(a, 11111) }, (err) => { var b = '失败回调' console.log(b, 22222) })
函数封装
// new 做了什么 // 1. 创建一个新的空对象 // 2. 将构造函数中的this指向这个新空对象 // 3. 执行构造函数中的代码 // 4. 返回这个对象 // 5. 这个对象上有一个__proto__指向构造函数的原型 // 定义一个函数包起来 function promiseTest () { var promise = new Promise((resolve, reject) => { var flag = false if (flag) return resolve() reject() }) return promise } /* var a = promiseTest() console.log(a) a.then((res) => { var a = '成功回调' console.log(a, 11111) }, (err) => { var b = '失败回调' console.log(b, 22222) }) */ promiseTest().then((res) => { var a = '成功回调' console.log(a, 11111) }, (err) => { var b = '失败回调' console.log(b, 22222) })
promise读取文件
const fs = require('fs') const path = require('path') // 读取文件成功之后 帮我调用success函数 如果读取失败帮我调用fail函数 /*function success () { console.log(`成功了`) } function fail () { console.log(`失败`) } fs.readFile(path.join(__dirname, './files/1.txt'), 'utf8', (err, data) => { if (err) return fail() success() }) */ // 用promise写 function ReadFilePromise () { return new Promise(function(resolve, reject) { fs.readFile(path.join(__dirname, './files/1.txt'), 'utf8', (err, data) => { if (err) return reject() resolve() }) }) } ReadFilePromise().then((res) => { console.log('成功了') }, (err) => { console.log('失败了') })
const fs = require('fs') const path = require('path') // 用promise写 function ReadFilePromise (name) { return new Promise(function(resolve, reject) { fs.readFile(path.join(__dirname, `./files/${name}`), 'utf8', (err, data) => { if (err) return reject(err) resolve(data) }) }) } ReadFilePromise('1.txt') .then((res) => { console.log(res) return ReadFilePromise('2.txt') }) .then((res) => { console.log(res) return ReadFilePromise('3.txt') }) .then((res) => { console.log(res) }) .catch(err => { console.log(err) })
Sometimes you need to applaud yourself