个人项目地址:
SubTopH前端开发个人站
(自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面)
SubTopH前端开发个人站
https://subtop.gitee.io/subtoph.github.io/#/home
以上 👆 是个人前端项目,欢迎提出您的建议😊
以下是正文内容……………
多次调用then,每次res值都是new Promise的值
const promise = new Promise((resolve, reject) => {
resolve("hahaha")
})
// 1.同一个Promise可以被多次调用then方法
// 当我们的resolve方法被回调时, 所有的then方法传入的回调函数都会被调用
promise.then(res => {
console.log("res1:", res) //hahaha
})
promise.then(res => {
console.log("res2:", res) //hahaha
})
promise.then(res => {
console.log("res3:", res) //hahaha
})
链式调用then
then方法传入的 “回调函数: 可以有返回值
then方法本身也是有返回值的, 它的返回值是Promise
如果返回的是一个普通值(数值/字符串/普通对象/undefined), 那么这个普通的值被作为一个新的Promise的resolve值
then的链式调用接受之前tnen返回的新Promise
const promise = new Promise((resolve, reject) => {
resolve("hahaha")
})
promise.then(res => {
return "aaaaaa"
//或包装Promise的resolve值返回
// new Promise((resolve, reject) => {
// resolve("aaaaaa")
// })
}).then(res => { //这里.then的res是前一个then的返回值 resolve("aaaaaa")
console.log("res:", res) //aaaaaa
})
promise.then(res => {
// 如果没有返回值如下
//或包装Promise的resolve值返回
// new Promise((resolve, reject) => {
// resolve("undefined")
// })
}).then(res => { //这里.then的res是前一个then的返回值 resolve("undefined")
console.log("res:", res) //undefined
})
如果返回的是一个Promise
const promise = new Promise((resolve, reject) => {
resolve("hahaha")
})
promise.then(res => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(111111)
}, 3000)
})
}).then(res => {
console.log("res:", res) //111111 3秒后打印 由返回的Promise状态决定
})
如果返回的是一个对象, 并且该对象实现了thenable
const promise = new Promise((resolve, reject) => {
resolve("hahaha")
})
promise.then(res => {
return {
then: function(resolve, reject) {
resolve(222222)
}
}
}).then(res => {
console.log("res:", res) //222222
})
版权声明:本文为weixin_42681555原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。