欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

promise使用

程序员文章站 2022-07-03 09:32:32
...

基本使用

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