使用console.log作为promise回调

时间:2016-03-03 00:56:06

标签: javascript promise ecmascript-6

我觉得有点奇怪,解决这样的承诺

.then(console.log, console.log)

不起作用,但这可行

 .then(d => {
     console.log(d);
   }, err => {
     console.log(err);
   });

我缺少什么

1 个答案:

答案 0 :(得分:4)

console.log()函数需要console对象作为this的值,否则它将不会/不能正常工作。你通过第二位代码实现了这一点,因为你正常地调用console.log()。但是,在第一个代码中,您正在“剥离”函数的引用,远离对象本身,所以当promise机制调用函数时,它无法知道它应该安排this到是console对象。

您也可以

.then(console.log.bind(console), console.log.bind(console))

虽然那很难看:)