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的使用

在这里插入图片描述

  • 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) )
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值