最简单代码实现promise

Promise是一个对象,保存着未来将要结束的事件,它有两个特征:

1、对象的状态不受外部影响,Promise对象代表一个异步操作,有三种状态,pending进行中,fulfilled已成功,rejected已失败,只有异步操作的结果,才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,这也就是promise名字的由来

2、一旦状态改变,就不会再变,promise对象状态改变只有两种可能,从pending改到fulfilled或者从pending改到rejected,只要这两种情况发生,状态就凝固了,不会再改变,这个时候就称为定型resolved,

Promise的基本用法,

let promise1 = new Promise(function(resolve,reject){

setTimeout(function(){

resolve('ok')

},1000)

})

promise1.then(function success(val){

console.log(val)

})

最简单代码实现promise

class PromiseM {

constructor (process) {

this.status = 'pending'

this.msg = ''

process(this.resolve.bind(this), this.reject.bind(this))

return this

}

resolve (val) {

this.status = 'fulfilled'

this.msg = val

}

reject (err) {

this.status = 'rejected'

this.msg = err

}

then (fufilled, reject) {

if(this.status === 'fulfilled') {

fufilled(this.msg)

}

if(this.status === 'rejected') {

reject(this.msg)

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我了解你的问题。这里我将使用JavaScript语言来实现红绿灯的promise实现。 首先,我们需要定义一个函数来模拟红绿灯的变化过程。这个函数会接受两个参数,一个是颜色,另一个是时间。 ```javascript function changeLight(color, time) { return new Promise(function(resolve, reject) { setTimeout(function() { if (color === 'red') { console.log('红灯亮了'); } else if (color === 'green') { console.log('绿灯亮了'); } else if (color === 'yellow') { console.log('黄灯亮了'); } resolve(); }, time); }); } ``` 接下来,我们可以使用该函数来实现一个红绿灯的交替变化。具体来说,我们可以使用promise的then()方法来实现这个交替变化过程。 ```javascript changeLight('red', 3000) .then(function() { return changeLight('green', 2000); }) .then(function() { return changeLight('yellow', 1000); }) .then(function() { return changeLight('red', 3000); }); ``` 在这个例子中,首先我们调用了changeLight()函数,让红灯亮起来。然后我们使用then()方法来等待这个promise完成,并调用changeLight()函数让绿灯亮起来。接着我们再次使用then()方法等待第二个promise完成,并调用changeLight()函数让黄灯亮起来。最后,我们再次使用then()方法等待第三个promise完成,并调用changeLight()函数让红灯亮起来。这样,就实现了一个简单的红绿灯交替变化的效果。 希望这个例子能够帮助到你,如果你还有其他问题,可以继续问我哦。 ### 回答2: 要实现红绿灯的功能,可以使用Promise来管理灯的状态转换。首先,我们需要定义一个Promise对象,初始状态为绿灯亮。然后,通过setTimeout函数来模拟灯的状态改变。 首先,创建一个Promise对象,将初始状态设置为绿灯亮,并返回Promise实例: ```javascript const trafficLight = new Promise((resolve, reject) => { resolve('绿灯亮'); }); ``` 接下来,可以通过.then方法来监听Promise的状态变化,并根据不同的状态执行相应的操作。在.then方法中,可以使用setTimeout来模拟灯的状态改变,并通过resolve方法来改变Promise的状态: ```javascript trafficLight.then((status) => { console.log(status); // 初始状态为绿灯亮 return new Promise((resolve, reject) => { setTimeout(() => { resolve('黄灯亮'); }, 2000); }); }).then((status) => { console.log(status); // 等待2秒后,黄灯亮 return new Promise((resolve, reject) => { setTimeout(() => { resolve('红灯亮'); }, 1000); }); }).then((status) => { console.log(status); // 等待1秒后,红灯亮 }); ``` 上述代码中,通过链式调用.then方法,实现了红绿灯的状态转换。在每个.then方法中,使用setTimeout来模拟状态改变,并通过resolve方法将状态改变传递给Promise对象。这样,我们就可以在每个.then方法中监听到状态的变化并执行相应的操作。 通过上述代码,可以实现红绿灯的状态转换,并在控制台输出每个状态的变化。 ### 回答3: 红绿灯是交通中常见的信号灯,用于指示车辆和行人何时可以通行。为了实现红绿灯的功能,可以使用promise来进行控制。 首先,我们可以创建一个promise对象来表示红绿灯的状态。在promise对象中,我们可以设定两种状态:红灯和绿灯。 当红灯亮时,表示车辆和行人需要停下等待。这时,我们可以返回一个promise对象,并在其中使用setTimeout函数模拟红灯的等待时间。在红灯等待时间结束后,我们可以将promise状态改为resolve,表示红灯变为绿灯。 当绿灯亮时,表示车辆和行人可以通行。为了模拟绿灯的持续时间,我们同样可以返回一个promise对象,并在其中使用setTimeout函数来延迟绿灯的等待时间。在绿灯等待时间结束后,我们同样将promise状态改为resolve,表示绿灯变为红灯。 通过这样的promise设置,我们可以实现红绿灯的循环变换。在每次红灯和绿灯的状态变化时,我们可以对promise进行相应的处理,例如调用.then()方法来执行后续操作。 总结起来,使用promise可以帮助我们实现红绿灯的控制。通过设置promise对象的状态变化,我们可以模拟红灯和绿灯的持续时间,从而实现红绿灯的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值