1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-28 21:32:20 +00:00

docs(promise): edit Promise.reject

This commit is contained in:
ruanyf 2016-12-27 11:35:14 +08:00
parent e653a31d7b
commit a44b2f0fa8

View File

@ -637,14 +637,14 @@ console.log('one');
## Promise.reject()
`Promise.reject(reason)`方法也会返回一个新的Promise实例该实例的状态为`rejected`它的参数用法与`Promise.resolve`方法完全一致。
`Promise.reject(reason)`方法也会返回一个新的 Promise 实例,该实例的状态为`rejected`
```javascript
var p = Promise.reject('出错了');
// 等同于
var p = new Promise((resolve, reject) => reject('出错了'))
p.then(null, function (s){
p.then(null, function (s) {
console.log(s)
});
// 出错了
@ -652,6 +652,24 @@ p.then(null, function (s){
上面代码生成一个Promise对象的实例`p`,状态为`rejected`,回调函数会立即执行。
注意,`Promise.reject()`方法的参数,会原封不动地作为`reject`的理由,变成后续方法的参数。这一点与`Promise.resolve`方法不一致。
```javascript
const thenable = {
then(resolve, reject) {
reject('出错了');
}
};
Promise.reject(thenable)
.catch(e => {
console.log(e === thenable)
})
// true
```
上面代码中,`Promise.reject`方法的参数是一个`thenable`对象,执行以后,后面`catch`方法的参数不是`reject`抛出的“出错了”这个字符串,而是`thenable`对象。
## 两个有用的附加方法
ES6的Promise API提供的方法不是很多有些有用的方法可以自己部署。下面介绍如何部署两个不在ES6之中、但很有用的方法。