JavaScript学习Day32笔记

Day32笔记

一、Promise异步编程

  • Promise是异步编程的一种解决方案。

  • 从语法上讲,Promise是一个内置对象(构造函数),自身上有 resolvereject方法原型上有 thencatch方法

    new Promise(function(resolve,reject){})
    
  • Promise对象提供了简洁的API,使得控制异步操作更加容易,避免了回调地域的问题。

二、Promise的三种状态

  • pending => 正在请求
  • rejected => 已失败
  • fulfilled => 已成功

三、Promise的特点

  • Promise对象的状态改变只有两种可能: pending(正在请求) => rejected(已失败)、 pending(正在请求) => fulfilled(已成功)。
  • 只要上面两种情况发生,状态确定了,不会再改变,一直保持这个结果,这时就被称为resolved(已定型)
  • Promise对象的状态不受外界影响,只有异步操作可以决定Promise的状态,Promise的英文意思是 “承诺” ,表示其他任何操作都无法改变这个状态。

四、Promise的使用

JavaScript学习Day32笔记

  • resolved:异步请求成功时,通过 resolved 回调函数返回Promise的结果。
  • rejected:异步请求失败时,通过 rejected 回调函数返回Promise的结果。
  • then:对应 resolved 回调函数,通过 then 回调函数返回 resolved的结果。
  • catch:对应 rejected 回调函数,通过 then 回调函数返回 rejected的结果。

五、Promise的基本操作

// 以异步读取文件为例,先引入fs
const fs = require('fs')
// 使用promise对异步进行封装
const promiseObj = new Promise(function(resolved,rejected){
	fs.readFile('文件路径',function(err,data){
        // 文件读取失败时
        if(err){
            // 用rejected返回失败结果
            rejected(err);
            return
        }
        // 用resolved返回成功结果
        resolved(data);
    })
}
// 使用then处理resolved返回的data内容
promiseObj.then(function(data){
    console.log(data)
})
// 使用catch处理rejected返回的err内容
promiseObj.catch(function(err){
    console.log(err)
})

六、Promise的链式写法(简写)

const fs = require('fs')
new Promise((resolved,rejected) => {
    fs.readFile('文件路径',(err,data) => {
        if(err){
            rejected(err);
            return
        }
        resolved(data);
    })
}).the( data => console.log(data) ).catch( err => console.log(err) )
上一篇:one-hot编码/哑编码/独热编码


下一篇:Hot 100题刷题 Day 3