老师,能不能详细讲解下对于传入一个有then方法的对象时的情况.
<!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>Document</title>
</head>
<body>
<script>
const obj = {
then(resolve, reject) {
console.log(123);
resolve(456)
},
}
const p = Promise.resolve(obj).then(data => {
console.log(data);
})
</script>
</body>
</html>
问题描述:
为什么调用obj的then方法就能使Promise.resolve(obj)返回的对象有状态?
能不能详细讲解下执行流程
48
收起
正在回答
1回答
同学你好,可以参考以下思路来理解:
当定义好带有then方法的对象,并把该对象作为参数传入Promise.resolve()方法中时(代码如下),就会调用该对象的then()方法
Promise.resolve({ then(a, b) { a(123); } })
而then()方法定义时传入了两个形参a和b,调用时就会传入具体实参,此时Promise.resolve()就会将resolve, reject两个真实的方法作为具体实参传入then方法,从而对象中的then方法能够调用resolve()和reject()改变状态。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星