promise 小知识

76 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1、promise 介绍

Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。 一共有三个状态:pending,fullfiled,rejected; resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。

2、promise 作用

主要用于异步计算,解决回调地狱问题;它可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果;也可以在对象之间传递和操作promise,帮助我们处理队列。

3、promise 使用例子

new Promise(
  function (resolve, reject) {
    // 处理一段非常耗时的异步操作
    resolve('成功') 
    // reject('失败') 
  }
).then(
  (res) => {console.log(res)},  // 成功后的回调
  (err) => {console.log(err)} // 失败
)
// 读取文件
var fs = require('fs')

var p1 = new Promise(function (resolve, reject) {
  fs.readFile('./data/a.txt', 'utf8', function (err, data) {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})

var p2 = new Promise(function (resolve, reject) {
  fs.readFile('./data/b.txt', 'utf8', function (err, data) {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})

var p3 = new Promise(function (resolve, reject) {
  fs.readFile('./data/c.txt', 'utf8', function (err, data) {
    if (err) {
      reject(err)
    } else {
      resolve(data)
    }
  })
})

p1
  .then(function (data) { // 该方法作为P1 的resolv
    console.log(data) // 这个data 就是 P1 的值
    return p2
  }, function (err) {
    console.log('读取文件失败了', err)
  })
  .then(function (data) { // 该方法作为P2 的resolv
    console.log(data) // 这个data 就是 P2 的值
    return p3
  })
  .then(function (data) { // 该方法作为P3 的resolv
    console.log(data) // 这个data 就是 P3 的值
  })