<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>