站点工具

用户工具


====== 差别 ======

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
javascript_promisea_规范 [2022/04/06 17:34]
若愚 创建
javascript_promisea_规范 [2022/04/06 18:53]
若愚
行 4: 行 4:
 1. https://promisesaplus.com/ 1. https://promisesaplus.com/
 1. https://promisesaplus.cn/ 1. https://promisesaplus.cn/
 +
  
 ## 规范解析 ## 规范解析
 +
 +#### 2.1
 +```javascript
 +
 +var p1 = new Promise(function(){})  //处于pending状态的Promise对象p1
 +var p2 = Promise.resolve(1)       //处于fulfilled状态的p2
 +var p3 = Promise.reject('error' //处于reejected状态的p3
 +```
 +
 +#### 2.2
 +```javascript
 +new Promise((resolve, reject) => {
 +  let v = Math.random()
 +  if(v > 0.5) {
 +    resolve(v)
 +  } else {
 +    reject('less than 0.5')
 +  }
 +}).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, onRejected)`,如果 onFulfilled 或者 onRejected 返回一个值 x , 则运行 Promise 解决过程: [[Resolve]](promise2, x).
 +
 +当x是一个普通值时 2.3.4
 +
 ```javascript ```javascript
 const delayer = (t) => new Promise((resolve, reject) => { const delayer = (t) => new Promise((resolve, reject) => {
行 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:
 }) })
 ``` ```
 +
 +
 +
 +
 +
若愚 · 2022/04/06 18:53 · javascript_promisea_规范.txt