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)你再看看?

推荐问题
宣传栏