Promise 容器的 图解,使用,封装

在 ES6 中新增了一个 API:Promise,Promise 是一个构造函数。

Promise 容器 图解:

Pending:正在执行;Resolved:成功;Rejected:失败。


⚠️ Promise 本身不是异步,但是里面的任务是异步:

使用:
var fs = require("fs")

// 创建 Promise 容器
// Promise 容器一旦创建,就开始执行里面的代码
var p1 = new Promise(function (resolve, reject) {
    fs.readFile("xxx.js", "utf-8", function (err, data) {
        if (err) {
            // Pending --> Rejected 失败
            // 这里调用的 reject 方法实际上就是 then 方法的第二个参数函数
            reject(err)
        } else {
            // Pending --> Resolved 成功
            // 这里调用的 resolve 方法实际上就是 then 方法传递的第一个 function
            resolve(data)
        }
    })
})

// 当 p1(Promise) 成功了 然后(then)进行指定的操作
// then 方法接收的 function 就是容器中的 resolve 函数
p1.then(function (data) {
    console.log(data)
}, function (err) {
    console.log('读取文件失败了', err)
})

.then() 的链式调用:

图解:

var fs = require("fs")
var p1 = new Promise(function (resolve, reject) {
    fs.readFile("xxx.js", "utf-8", function (err, data) {
        if (err) {
            reject(err)
        } else {
            resolve(data)
        }
    })
})
var p2 = new Promise(function (resolve, reject) {
    fs.readFile("4.js", "utf-8", function (err, data) {
        if (err) {
            reject(err)
        } else {
            resolve(data)
        }
    })
})

p1
    .then(function (data) {
        console.log(data)
        return p2
    }, function (err) {
        console.log('读取文件xxx失败了', err)
    })
    .then(function (data) {
        console.log(data)
    }, function (err) {
        console.log('读取文件4失败了', err)
    })

封装 Promise 版本的 readFile:
var fs = require("fs")

function pReadFile(filePath) {
    return new Promise(function (resolve, reject) {
        fs.readFile(filePath, "utf-8", function (err, data) {
            if (err) {
                reject(err)
            } else {
                resolve(data)
            }
        })
    })
}

pReadFile("xxx.js")
    .then(function (data) {
        console.log(data)
        return pReadFile("4.js")
    })
    .then(function (data) {
        console.log(data)
    })




? 视频讲解 Promise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值