Promise

为什么我的Promise.then()里面的函数中参数能够拿到reject的值?

阅读 1.8k
4 个回答

.then又返回了一个新的Promise,
你看到的是这个新的Promise,里面的reject

你并没有“拿到” reject 的值。
可以在打印语句前面加上 prefix,例如使用这样的语句:

p.then(data => console.log('data is now:', data));

这样的话console.log有没有执行,一目了然。
至于你看到的那个 Promise,不过是控制台将你的输入的上一个语句的返回值显示出来了而已;
红色的是抛错,和打印也没有关系。

当执行resolve或者reject后就改变了状态,从而只能执行对应的回调, Promise.then() 是执行不了里面的回调的, 所以不是拿到了reject的值,而是浏览器控制台console默认输出了Promise.then() 的返回值

推荐自己去搜索相关Promise的资料,如https://segmentfault.com/a/11...

改成console.log(">_<", data)你再看看?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏