<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
<script src="./promise.js"></script>
<script>
let p = new Promise((resolve, reject)=>{
resolve('成功')
reject('失败')
})
// console.log(p)
p.then((data)=>{
console.log(data)
},reason =>{
console.log(reason)
})
</script>
</html>
function Promise(a){
// 添加属性
this.PromiseState = 'pending'
this.PromiseResult = null
// 保存实例对象的 this
let self = this
function resolve(data){
// resolve('ok') reject('失败') 同时调用,取第一个
if(self.PromiseState !== 'pending') return
// 修改状态
self.PromiseState = 'fulfilled'
self.PromiseResult = data
}
function reject(data){
// resolve('ok') reject('失败') 同时调用,取第一个
if(self.PromiseState !== 'pending') return
// 修改状态
self.PromiseState = 'rejected'
self.PromiseResult = data
}
a(resolve, reject)
}
// 添加then方法
Promise.prototype.then = function(onResolved, onRejected){
if(this.PromiseState === 'fulfilled'){
onResolved(this.PromiseResult)
}
if(this.PromiseState === 'rejected'){
onRejected(this.PromiseResult)
}
}
打印结果