js promise返回结果依旧是promise只要想可以一直不停调
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/es6-promise/4.2.8/es6-promise.auto.js"></script>
</head>
<body>
<script>
let l1=[1,2,3,4]
console.log(l1[2])
const p=new Promise((resolve,reject)=>{
reject("被拒绝了兄弟下次努力")
})
const p2=new Promise((resolve,reject)=>{
resolve("我成功了")
})
Promise.all([p,p2]).then(res=>{
console.log("p,p2都已经执行")
}).catch(err=>{
console.log("p,p2有一个没有执行成功",err)
})
console.log(p)
console.dir(p)
const t=p.then(res=>{
console.log(res,"我爱北京天安门牙")
}).catch(rej=>{
console.log("拒绝的内容是",rej)
})
.then(res=>{
console.log("小明是个好孩子")
}).then(res=>{
console.log("王大拿的乡村爱情好看我喜欢看")
return Promise.reject("就是拒绝你")
})
console.log(t)
console.dir(t)
f=t.then(res=>{
console.log("嗯是的被拒绝了")
}).catch(err=>{
console.log(err,"小伙被拒绝了吧")
})
console.log(f)
console.dir(f)
f.then(res=>{
console.log("好伤心有失恋了")
}).catch(err=>{
console.log("小明喜欢去健身")
}).then(res=>{
console.log("偏偏喜欢你")
})
</script>
</body>
</html>
执行结果
promise.then 和catch的返回的值都是promise,无论有没有return可以不停的调取,但是需要注意的是只有当promise的状态是rejected的时候会调用catch当然如果promise执行体中有错误代码也会执行,当状态是fulfilled的时候会调用then,所以catch语句如果执行的没问题,还是会调用then方法
但是有个疑问console.log(t) console.dir(t)为什么会放在前面提前执行,状态pending的时候我还可以理解,但是fulfilled为啥不执行,知道的可以评论区告诉我谢谢