首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >promise链中的.then(console.log())和.then(() => console.log())在执行上有何不同

promise链中的.then(console.log())和.then(() => console.log())在执行上有何不同
EN

Stack Overflow用户
提问于 2018-06-13 11:35:57
回答 1查看 22.4K关注 0票数 9

在效率上有什么区别吗?如果不使用console.log()而使用setTimeout,行为是否会有所不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-13 11:43:14

你基本上可以做这三件事

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.then(console.log())

这会立即调用console.log,而不是等到承诺得到解决,所以这可能不是您想要做的事情。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.then(console.log)

这仅在promise成功解析(需要一次函数调用)并将promise的结果隐式传递给console.log函数之后才执行console.log。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.then(() => console.log())

和以前一样,需要2个函数调用,但是你可以很容易地传递一些其他的参数给它。

在第二种情况下,要将额外的参数传递给console.log,需要使用Function.prototype.bind方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const promise = new Promise((resolve, reject) => {
  resolve('');
});
promise.then(console.log.bind(console, 'new arg'));

并查看上面提到的所有三种情况的实际情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const promise1 = new Promise((resolve, reject) => {
  resolve('promise 1');
});
promise1.then(console.log());

const promise2 = new Promise((resolve, reject) => {
  resolve('promise 2');
});
promise2.then(console.log);

const promise3 = new Promise((resolve, reject) => {
  resolve('promise 3');
});
promise3.then(v => console.log(v));

在第一种情况下,console.log没有接收和参数。在第二种情况下,console.log隐式地从promise接收值,在第三种情况下,它接收相同的值,但显式地接收。

在这种情况下,第二种情况和第三种情况之间唯一的性能差异是第三种情况多执行了一次函数调用(这是我们实际上不必担心的事情)。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50836242

复制
相关文章
console.log详解
console.log方法用于在控制台输出信息。它可以接受一个或多个参数,将它们连接起来输出。
全栈程序员站长
2022/09/14
1.5K0
console.log分析
在js的开发过程中,我们不可避免的需要对某些参数的状态进行追踪,这个时候就回使用console.log这个函数,但这个简单函数背后你所不知道的一面
Yerik
2021/08/24
5970
console.log的那点事儿
除了一些很老版本的浏览器,现今大多数浏览器都自带调试功能;即使没有调试功能,也可以通过安装插件来进行补充。比如,老版本的Firefox没有自带调试工具,在这种情况下可以通过安装Firebug插件来添加调试功能。在具备调试功能的浏览器上,window对象中会注册一个名为console的成员变量,指代调试工具中的控制台。通过调用该console对象的log()函数,可以在控制台中打印信息。比如,以下代码将在控制台中打印”Sample log”:
OECOM
2020/07/01
7410
被忽略的console.log
除了console.log之外,还有更多方式调试JavaScript来输出值。 看起来很明显我们没有。
frontoldman
2019/09/03
8900
被忽略的console.log
console.log新玩法
console.log支持多样化玩法,这里以console.log的css内容输出为例,也就是console.log()输入多样化内容
十月梦想
2018/08/29
6680
console.log新玩法
JS中只会使用console.log( )?
除了最常用的console.log()消息在浏览器中显示消息外,还有许多其他方法可以使调试过程变得更加容易。让我们通过示例逐一查看它们。
青梅煮码
2023/03/13
5410
JS中只会使用console.log( )?
console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么
这是前几天阅读公众号文章遇到的一篇文章,灰常有意思,记录一下。 JavaScript不愧是弱类型语言,换成其他语言,这肯定报错吧。
cultureSun
2023/05/18
2550
console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么
console.log的炫酷用法
今天使用 chrome 浏览器打开百度首页(https://www.baidu.com),打开开发者工具,windows 下的快捷键是 F12,MAC 上的快捷键通常是option+cmd+i,接着点击 console tab,看到了下面一幕。
猿哥
2019/07/25
1.6K0
console.log()的作用与实现[通俗易懂]
1,他能看到结构话的东西,如果是alert,淡出一个对象就是[object object],但是console能看到对象的内容。 2,console不会打断你页面的操作,如果用alert弹出来内容,那么页面就死了,但是console输出内容后你页面还可以正常操作。
全栈程序员站长
2022/09/15
2.5K0
console.log()的作用与实现[通俗易懂]
console.log() 是异步操作???
上面的代码,看起来consol.log()像是异步执行的,但其实不是。而是因为在控制台点击展开按钮的的时候,浏览器会去获取一遍最新的result的值。所以result[0].a === 2
小小范
2022/01/05
6200
console.log() 是异步操作???
console.log的那件事
起因 很多朋友在群里问过,为什么打印的对象/数组里面明明有值,但是我后面打印它某个值跟预期不一样? 看代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> </body> <scrip
JowayYoung
2020/09/11
4490
console.log的那件事
[译]你可以在JSX中使用console.log吗?
可是上面的代码并不可以得到他们想要的结果,浏览器会把这段代码console.log(this.props.todos) 当做纯文本在界面展示出来 。
进击的大葱
2022/08/22
2.3K0
使用console.log在控制台打印图片
在项目的开发中我们经常使用console.log方法在控制台输出数据,看数据是否正确。console是全局变量window(或global)下的一个对象,它给我们提供了很多的方法,我们可以打印一下这个对象,如下:
kai666666
2020/10/17
3.4K0
console.log() 之外的调试技巧
console.log( ) 是JS开发时常用的小工具,输出一些信息来辅助调试,console 还有很多有用的方法,下面介绍几个方便调试的用法 跟踪堆栈 例如想找出某个函数是被谁调用,如果调用层级较深的话,会让人非常痛苦 使用 console.trace() 可以跟踪他的调用轨迹,明确知道是从哪儿开始调用 function func_A () { func_B(1, 2); } function func_B (arg1, arg2) { console.trace(); } func_A(
dys
2018/04/03
1.4K0
console.log() 之外的调试技巧
你不知道的console.log
对于前端开发者,使用console.log() 次数绝对很多,但是大部分人认识的 console 对象还不是很全面,其实深入了解这些后,你会发现给开发过程带来很多便利,而且还很有趣。
游魂
2018/08/30
1.3K0
console.log也能插图!!!
言归正传,console.log 是支持使用 background 的。唯一注意的是需要使用 网络图片 或者 base64 类型的图片。 我试过用相对路径引用本地图片,结果是引用失败(也不会报错,不知道是不是我的姿势错了导致引用失败)。
德育处主任
2022/04/15
3.2K0
console.log也能插图!!!
你真的会用Console.log吗?
在浏览器控制台打印输出信息,极大地方便了开发者的调试以及解决问题。console.log() 该方法输出的信息就像是解决难缠问题的一剂良药。而且大多数的开发者都想这样——让我在浏览器控制台获得更多与问题有关的信息。我很确定我并不是唯一这样想的人。
小东同学
2022/07/29
4640
你真的会用Console.log吗?
138. 精读《精通 console.log》
本周精读的文章是 Mastering JS console.log like a Pro,一起来更全面的认识 console 吧!
黄子毅
2022/03/14
3520
138. 精读《精通 console.log》
你还在用 console.log 调试 ?
链接 | juejin.im/post/5d18d6eb6fb9a07edc0b6cc4
JavaFish
2020/03/05
1.6K0
点击加载更多

相似问题

执行promise时未触发console.log

141

`console.log([])`和`console.log([].toString())`提供不同的输出

10

在promise完成之前显示的console.log()

253

NodeJS promise.catch和console.log的bug?

22

浏览器console.log和代码console.log显示不同

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文