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)
})

  

原文地址:https://www.cnblogs.com/tuziling/p/10828133.html