js异步then用法
在JavaScript中,Promise对象的then方法用于指定当Promise对象的状态变为resolved(已解决)时执行的回调函数。它接受一个或两个参数:onResolved和onRejected。
1. 一个参数的情况:
  ```javascript
  promise.then(onResolved)
  ```
  在Promise对象的状态变为resolved时,会调用onResolved函数。onResolved函数的参数是Promise对象的解析值。
2. 两个参数的情况:
  ```javascript
  promise.then(onResolved, onRejected)
  ```
  在Promise对象的状态变为resolved时,会调用onResolved函数;在Promise对象的状态变为rejected(已拒绝)时,会调用onRejected函数。onResolved函数的参数是Promise对象的解析值,onRejected函数的参数是Promise对象抛出的错误。
then方法返回一个新的Promise对象。因此,可以对then方法进行链式调用,以便处理连续的异步操作。例如:
```javascript
promise.then(onResolved1, onRejected1)resolved是什么状态
      .then(onResolved2, onRejected2)
      .then(onResolved3, onRejected3)
      .catch(onError)
```
这里的onResolved1、onResolved2、onResolved3分别是Promise对象的解析值被处理的回调函数,onRejected1、onRejected2是Promise对象抛出错误时的处理函数,onError是捕获到所有错误的处理函数。
当然,then方法也可以通过返回一个新的Promise对象来实现中断链式调用。在回调函数中返回一个新的Promise对象,后续的then方法将会等待这个新的Promise对象的状态变化。例如:
```javascript
promise.then(onResolved1)
      .then(function(value){
          // 处理value
          return new Promise(function(resolve, reject){
              // 异步操作
              if (success){
                  resolve(result);
              } else {
                  reject(error);
              }
          });
      })
      .then(onResolved2)
      .catch(onError)
```
在第二个then方法的回调函数中返回了一个新的Promise对象,后续的then方法将等待这个新的Promise对象的状态变为resolved或rejected后继续执行相应的回调函数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。