ES6 Promise 对象最详细的理解

本文深入讲解ES6中Promise对象的基本用法,包括如何创建Promise对象、处理异步操作,以及如何使用then方法进行链式调用。通过示例代码详细解释resolve和reject函数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Promise 对象是ES6中的语法,主要是处理异步操作用的方法。
一 基本用法:

  1. 创建promose对象

     var p = new Promise(function(resolve,reject){
     	// 异步操作写在函数体中
     	if(异步操作成功){
     	resolve(value)
     	}else{
     	reject(value)
     }
     })
    

其实 就是构造函数创建实例化对象。其中,异步操作写在函数体中,
Promise 构造函数参数是一个函数,这个函数有两个参数,resolve,reject函数,这两个参数都是函数。
resolve() 函数是在异步操作执行成功后调用,resolve的参数是异步操作执行的结果。
reject()函数是异步操作执行失败时调用,参数是异步操作所报的错

2. promise 对象的回调函数
Promise.prototype.then()方法
大家一看也就清楚了,原型对象上定义的方法,then()方法有两个参数,第一个是resolve 对应的方法,第二个是reject 对应的方法(第二个参数可省略)

p.then(function(value){
console.log(value)   // 异步操作执行成功后的回调即resolve()
},function(error){
console.log(error)   // 异步操作执行失败后的回调即reject()
})
  1. then 的链式语法
    then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实 例)。因此可以采用链式写法,即then方法后面再调用另一个then方法。

     p.then(function(value){
     return 3
     }).then(function(data){
     console.log(data) //输出 3
     })
    

为什么会输出3呢 答案是then 方法返回的都是promise对象,上面的式子相当于如下:(进行了转换)

p.then(function(value){
return new Promise(function(resolve,reject){resolve(3)})
}).then(function(data){
console.log(data) //输出 3  
})

正常使用的时候,我们一般会这么写then方法每次都return 一个新promise 对象,然后下一个then是该新promise的方法,依次类推,但是注意:要实现链式语法,只有promise 对象才有then 方法。所以上一个必须是promise对象或上一个函数return 一个promise对象

p.then(function(value){
return new Promise(function(resolve,reject){resolve(3)})
}).then(function(data){
console.log(data) //输出 3  
})

注意在then()的链式语法中,下一个then方法会等待上一个promise对象执行完毕,直到它是resolve还是reject 然后在调用自身中的第一个参数方法还是第二个参数方法

p.then(function(value){
return new Promise(function(resolve,reject){resolve(3)})
}).then(function(data){
console.log(data) //输出 3  
},function(error){
 console.log(error) // reject时调用该方法
})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值