====== 差别 ======
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
javascript_promisea_规范 [2022/04/06 17:34] 若愚 创建 |
javascript_promisea_规范 [2022/04/06 18:53] (当前版本) 若愚 |
||
---|---|---|---|
行 4: | 行 4: | ||
1. https:// | 1. https:// | ||
1. https:// | 1. https:// | ||
+ | |||
## 规范解析 | ## 规范解析 | ||
+ | |||
+ | #### 2.1 | ||
+ | ```javascript | ||
+ | |||
+ | var p1 = new Promise(function(){}) | ||
+ | var p2 = Promise.resolve(1) | ||
+ | var p3 = Promise.reject(' | ||
+ | ``` | ||
+ | |||
+ | #### 2.2 | ||
+ | ```javascript | ||
+ | new Promise((resolve, | ||
+ | let v = Math.random() | ||
+ | if(v > 0.5) { | ||
+ | resolve(v) | ||
+ | } else { | ||
+ | reject(' | ||
+ | } | ||
+ | }).then(v => { | ||
+ | console.log(v) | ||
+ | }, reason => { | ||
+ | console.error(reason) | ||
+ | }) | ||
+ | ``` | ||
+ | |||
+ | 2.2.6 | ||
+ | |||
+ | ```javascript | ||
+ | let p = new Promise(resolve => resolve(1)) | ||
+ | p.then(v => console.log(v)) | ||
+ | p.then(v => console.log(v)) | ||
+ | ``` | ||
+ | |||
+ | |||
+ | #### 2.3 | ||
+ | |||
+ | |||
+ | then 必须返回一个promise,对于`promise2 = promise1.then(onFulfilled, | ||
+ | |||
+ | 当x是一个普通值时 2.3.4 | ||
+ | |||
```javascript | ```javascript | ||
const delayer = (t) => new Promise((resolve, | const delayer = (t) => new Promise((resolve, | ||
行 13: | 行 55: | ||
}) | }) | ||
- | ``` | ||
- | |||
- | ```javascript | ||
delayer(1000).then(t => { | delayer(1000).then(t => { | ||
console.log(t) | console.log(t) | ||
- | return t + 1000 | + | return t + 1000 // |
}).then(t => { | }).then(t => { | ||
console.log(t) | console.log(t) | ||
行 25: | 行 64: | ||
}) | }) | ||
``` | ``` | ||
+ | |||
+ | |||
+ | 当x是一个Promise对象时 2.3.2 | ||
```javascript | ```javascript | ||
行 46: | 行 88: | ||
}) | }) | ||
``` | ``` | ||
+ | |||
+ | |||
+ | 当x是包含then方法的对象时 2.3.3 | ||
```javascript | ```javascript | ||
行 65: | 行 110: | ||
}) | }) | ||
``` | ``` | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ |