<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>极简版promise</title>
</head>
<body>
<h1>
极简版promise
</h1>
<script>
function promise() {
this.status = 'penging'
this.msg = '' // 储存value与reson
console.log("argumen------------------ts",arguments)
let process = arguments[0], // 就是 new promise的函数
that = this
process( function () {
that.status = 'resolve'
that.msg = arguments[0]
},function () {
that.status = 'reject'
that.msg = arguments[0]
})
return this
}
promise.prototype.then = function () {
if(this.status === 'resolve') {
arguments[0](this.msg)
return this.msg
}
}
// 封装promise代码
function doSomething (val) {
return new promise ( (resolve) => {
resolve(val)
})
}
doSomething('我是参数-then').then(res => {
console.log("--------------",res)
})
// 测试
add()
async function add() {
const res = await doSomething('我是参数')
console.log('res',res)
}
// 正版promise
const p1 = new Promise( (resolve,reject) => {
if(Math.random()> 0.5){
resolve('我是resolve')
}else {
reject('我是reject')
}
})
console.log("p1",p1)
</script>
</body>
</html>
手写实现一个简易版promise
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最简易版本 promise 源码 思路整理分析正常使用时候如何实例化调用,认知梳理需求。由调用可知,一个 prom...