【promise的基本用法】

promise是用来处理多层嵌套的回调函数,它有三种状态:pending(进行中)、resolve(完成)、reject(失败)
如果成功,即从pending转为resolve,此时执行reslve函数
如果失败,即从pending转为reject,此时执行reject函数。

例子:
比如现在有一个函数

function delay(msg, cb){
	setTimeout(()=>{
		console.log(‘msg’)
		cb()
	}, 1000)
}

一秒后打印输入内容并且执行回调函数,我现在希望打印三个内容,就变成:

delay('1' ,()=>{
  delay('2', ()=>{
    delay('3')
  })
})

传入的第二个参数为下一个要打印的函数,层层嵌套,如果要打印的数字更多就得嵌套更多层,容易形成回调地狱,为了解决这个难题,我们可以使用promise函数。

因为promise函数有观察者和订阅者功能,它能知道函数是什么时候执行完成的,通过执行resolve函数的时候它就知道上一步已经执行完成了,知道完成时间了后,再执行then方法中的函数,便可以达到我们的目的了。

如下:
我们先创建一个promise实例对象

const delayPromise = msg =>{
  new Promise(resolve =>{
    delay(msg, resolve)
  })
}

直接调用即可

delayPromise('1')

通俗点讲就是当打印了数字1后,会执行resovle,通过resolve知道数字1已经打印了,然后执行then方法,我们只需要将打印数字2的函数放在then方法中,便会在打印1后自动执行打印2的。

如下:

delayPromise('1').then(() => delayPromise('2'))

而then方法可以写成链式函数,需要打印多少数字,我们只需要一直往后添加即可。这就相当于将之前一层一层的嵌套函数整个拉直了,完美解决了回调地狱的问题~~

如下:

delayPromise('1')
.then(() => delayPromise('2'))
.then(() => delayPromise('3'))
.then(() => delayPromise('4'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值