大保剑:Promise的有趣体验

对于ES6的Promise到如今已经跨过了ES7的一个版本了,下面介绍的这些玩意,看了千万要忍住了,如果你一眼看了感觉"so easy",那么恭喜你,收下我这个小菜鸟吧😄!
看!👇的代码,为了看的更加清楚,这里不做异常处理了!
javascript 复制代码
// 首先先定义两个变量式函数吧!
let test1 = () => {
    return new Promise((resolve, reject) => {
        resolve('test1...');
    })
}

let test2 = () => {
    return 'test2...';
}
下面开始忽悠...

这里先对Promise的then(onFulfilled, onRejected)中的两个参数的做一个了解,这两个参数都是可选的:(ps: 这里不对onRejected做梳理)。

  • 如果onFulfilled不是函数,就会忽略该参数
  • 如果onFulfilled是函数,就会将onFulfilled中的返回值作为下一个then函数的参数使用
Fun1⬇️
javascript 复制代码
test1().then(() => {
    return test2();
}).then((val) => {
    console.log(val);
    console.log('---->1');
})

######这个结果为什么会这样呢?

这是因为在第一个then函数中有返回值(return 'test2'),作为第二个then函数的参数传递,所以...嗯!

Fun2⬇️
javascript 复制代码
test1().then(() => {
    test2();
}).then((val) => {
    console.log(val);
    console.log('----2');
})
这个结果为什么会这样呢?

这是因为第一个then()函数中没有返回值,所以默认当作undefined处理,结果就是这样了...

Fun3⬇️
javascript 复制代码
test1().then(test2()).then((val) => {
    console.log(val);
    console.log('------3');
})
这个结果为什么会这样呢?

这是因为第一个then()函数里根本就不是一个函数,而是一个字符串,看上面的提前解读,不是函数的时候就会被忽略,自动寻找上一个then()的返回值,这里使用的是resolve()里的值,即'test1...'

Fun4⬇️
javascript 复制代码
test1().then(test2).then((val) => {
    console.log(val);
    console.log('------4');
})
这个结果为什么会这样呢?

这是因为第一个then()函数里的test2作为回调函数传递了进去,进而该then()函数就会有返回值了(return 'test2...'),这样就可以作为第二个then函数的参数传递进去了...gg!

最后,附上一张图,可能会更加直观。

END!

相关推荐
程序员大阳8 小时前
副队长JavaScript教程(50)-DOM:网页开发的起点
javascript·dom·es·节点·概念·document·关系
香芋芋圆12 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
晗夜未央14 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
jktantan15 小时前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
我命由我1234516 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
程序员大阳16 小时前
副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式
javascript·json·序列化·反序列化·stringify·parse
paopaokaka_luck18 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts
栀椩18 小时前
Electron 内嵌页面跨域问题(CORS/PNA)解决全记录
前端·javascript·electron
SEO_juper18 小时前
Chrome 扩展一键查看当前页面 SEO 信息:不用切页面,点一下全出来
前端·javascript·chrome
Highcharts.js18 小时前
CSUN 2026|Highcharts无障碍数据与AI分享
javascript·人工智能·数据分析·highcharts·图表开发