Promise的基本使用

Promise是ES6引入的异步编程的新解决方案。语法上Promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果。

  1. Promise 构造函数:Promise (excutor) {}
  2. Promise.prototype.then 方法
  3. Promise.prototype.cath 方法
// 实例化Promise
    const Pro = new Promise((resolve, reject) => {
      setTimeout(() => {
        let data = "数据库中的数据"
        resolve(data)
        let error = "读取数据失败"
        reject(error)
      })
    })

    // 使用Promise的.then方法
    Pro.then(
      value => console.log(value),  // 数据库中的数据
      error => console.log(error))  // 失败的话,就会接收reject传过来的数据

封装Promise读取文件

// 1. 引入fs模块
const fs = require("fs")

// 2. 调用方法读取文件
// fs.readFile("./text/a.text", (err, data) => {
//   if (err) console.log(err)
//   console.log(data.toString()) // a.testaa
// })

// 读取文件本身就是异步操作
// 3. 使用Promise封装
const Pro = new Promise((resolve, reject) => {
  fs.readFile("./text/a.text", (error, data) => {
    if (error) reject(error)
    resolve(data)
  })
})

Pro.then(
  (value) => console.log(value.toString()), // a.testaa
  (error) => console.log(error))  // 读取失败返回的值

Promise多个文件内容读取

const fs = require("fs")

const Pro = new Promise((resolve, reject) => {
  fs.readFile("./text/a.text", (error, data) => {
    resolve(data)
  })
})
Pro.then(value => {
  return new Promise((resolve, reject) => {
    fs.readFile("./text/b.text", (error, data) => {
      resolve([value, data])
    })
  })
}).then(value => {
  return new Promise((resolve, reject) => {
    fs.readFile("./text/c.text", (error, data) => {
      value.push(data)
      resolve(value)
    })
  })
}).then(value => console.log(value.join('\r\n')))
// 打印结果
/*
  a.testaa
  b.textbb
  c.textcc
*/

.catch语法糖

const p = new Promise((resolve, reject) => {
  setTimeout(() => {
    reject("出错")
  },1000)
})
p.catch((error) => console.log(error))  // 出错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值