Promise的then方法
then 方法 then是对象上面的一个方法。它其实是放在 Promise.prototype.then
1:同一个Promise可以调用多次then方法
2:then方法传入的回调函数可以有返回值,返回值是一个新的Promise,具体返回的类型类似于resolve参数
返回值是一个新的Promise时间上是这样一个过程:new Promise(resolve=>{resolve(x)} 会自动执行resolve这块
具体实现看代码
1 //Promise有哪些对象方法 2 // console.log(Object.getOwnPropertyDescriptors(Promise.prototype)); 3 const promise = new Promise((resolve, reject) => { 4 resolve('hahahahha') 5 }) 6 //1:同一个Promise 可以多次调用then方法 7 //当resolve方法被回调时,所有的then方法传入的回调函数都会被调用 8 promise.then((res) => { 9 console.log('res1:', res); 10 }) 11 promise.then((res) => { 12 console.log('res2:', res); 13 }) 14 //2:then方法传入的回调函数可以有返回值,返回值是Promise 15 //1>返回的是一个普通的值(数值、字符串、普通对象、undefined),这个值作为新的Promise的resolve值 16 promise.then(res => { 17 18 console.log('原来Promise的res', res); 19 return 'aaaaa' 20 }).then(res => { 21 console.log('新的Promise的then里面的res', res); 22 return 'bbbbbb' 23 }).then(res => { 24 console.log('链式调用', res); 25 }).then(res => { 26 console.log('没有返回值拿到的res:', res); 27 }) 28 //2>返回的是Promise 状态由这个新的Promise 决定 29 promise.then(res => { 30 31 console.log('原来Promise的res', res); 32 return new Promise((resolve, reject) => { 33 setTimeout(() => { 34 resolve(1111) 35 }, 3000) 36 }) 37 }).then(res => { 38 console.log('新的Promise的then里面的res', res); 39 }) 40 //3>返回的是一个对象 并且改对象有then方法 那么会执行改then方法,并根据then方法的结果来决定Promise的状态 41 promise.then(res => { 42 43 console.log('原来Promise的res', res); 44 const obj = { 45 then: function(resolve, reject) { 46 resolve('我是对象里面的then') 47 } 48 } 49 return obj 50 }).then(res => { 51 console.log('新的Promise的then里面的res', res); 52 })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!