为什么简单的Promise语句在浏览器中不起作用

时间:2016-05-09 18:30:08

标签: javascript google-chrome firefox

我试图将承诺值传递给下一个承诺并写下面的行来测试它。

Promise.resolve('hey').then(console.log);

很简单,如果我在终端运行节点(4.3.0)我得到了预期的结果

> Promise.resolve('hey').then(console.log);
Promise { <pending> }
> hey

然而,这不是我在浏览器中获得的结果。

Firefox不会出错,但永远不会记录&#34;嘿嘿&#34;;

Promise.resolve('hey').then(console.log);
Promise { <state>: "pending" }
>
Promise.resolve('hey').then(console.log);
Promise { <state>: "pending" }
>

Chrome错误消息

Promise.resolve('hey').then(console.log);
Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
undefined:1 Uncaught (in promise) TypeError: Illegal invocation

没有堆栈跟踪。

我试图看看Babel是否会将此代码转换为其他内容,但它根本不会改变此语句。

是什么给出的? 如果我在代码中使用这些语句,这会破坏吗?

1 个答案:

答案 0 :(得分:1)

您无法通过console.log,您需要直接使用您要记录的值来调用它:

Promise.resolve('hey').then(function(s) { console.log(s); });