Promise

70 阅读1分钟

1、Promise是什么

promise是ES6引入的异步编程的新解决方案。

语法上promise是一个构造函数, 用来封装异步操作并可以获取其成功或失败的结果

作用:解决异步编程的。例如:前后端交互;文件的读取【从磁盘读到内存中】;ajax等。

2、Promise原理

2.1、Promise有3个状态,分别是初始化、成功、失败

2.2、这是Promise的初始化。

const p = new Promise((resolve,reject) => {  //异步操作})

解释下箭头函数的那2个参数是干什么的:

①、resolve 是函数数据类型参数,可以把Promise状态设置为成功。

②、reject 是函数数据类型参数,可以把Promise状态设置为失败。

2.3、Promise还有2个函数,分别是then(data)、catch(err)。

当Promise的状态为成功的话,会自动调用then(data);当Promise的状态为失败的话,会自动调用catch(err);

3、关于用Promise进行读取文件的一个案例

const fs = require('fs') //引入node.js中本地文件扩展模块,require相当于js中的importconst p = new Promise((resolve,reject) => {  // 执行异步操作  fs.readFile('./01-let.js',(err,data) => {    // 当文件读取失败的时候    if(err){      reject(err) //可以把Promise状态设置为失败    }    // 当文件读取成功的时候    resolve(data) //可以把Promise状态设置为成功  })})// 当Promise状态为成功,then()会自动被调用p.then(data => {console.log(data.toString())})//当Promise状态为失败,catch()会自动被调用p.catch(err => {console.log('出错了')})

说明:在异步操作内进行设置Promise的状态,若执行了resolve(data),则会自动调用then(data)。若执行了reject(err),则会自动调用catch(err)。