<script>
const p = new Promise(((resolve, reject) => {
setTimeout(() => {
console.log('hello world')
resolve("hi")
// reject("err")
}, 1000)
}))
// then方法调用返回值仍是一个promise
// 1.如果回调函数中返回的结果是 非Promise 类型的属性,状态为成功,返回值为对象的成功值
// 2.如果如果回调函数中返回的结果是 Promise 类型的属性,相当于对这个返回的promise进行操作
const result = p.then((res) => {
console.log(res)
// 1、非promise类型,result值为一个promise对象,状态为成功,返回值value为123
// return 123
// 2、promise对象,该promise对象的结果,就是result的结果,相当于对这个返回的promise进行操作
// 这里写return 是因为result需要得到返回值 hi, 如果不写,result的结果仍是一个promise,只是value为undefined,对result进行链式调用的时候没法得到res的值
// return new Promise(((resolve, reject) => {
// setTimeout(() => {
// console.log('good')
// resolve("hi")
// // reject("err")
// }, 1000)
// }))
// 抛出错误,result的结果为一个promise,状态为rejected,
throw new Error("出错了")
}, (err) => {
console.log(err)
return 321
})
// result.then((res)=>{
// console.log(res)
// })
console.log(result);
</script>