我试图将承诺值传递给下一个承诺并写下面的行来测试它。
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是否会将此代码转换为其他内容,但它根本不会改变此语句。
是什么给出的? 如果我在代码中使用这些语句,这会破坏吗?
答案 0 :(得分:1)
您无法通过console.log
,您需要直接使用您要记录的值来调用它:
Promise.resolve('hey').then(function(s) { console.log(s); });