js promise对象嵌套promise对象,怎么解决
时间: 2023-10-24 21:19:33 浏览: 47
可以使用Promise的链式调用来解决嵌套的问题,具体的做法是在外层的Promise对象里返回一个内层的Promise对象,然后在内层的Promise对象里处理异步操作,最后通过resolve或reject把结果传递到外层的Promise对象中。
举个例子,假设我们要使用一个异步请求获取用户信息,然后再使用另一个异步请求获取用户的订单信息,代码可能会像这样:
```javascript
getUserInfo().then(userInfo => {
getOrderInfo(userInfo.id).then(orderInfo => {
console.log(orderInfo);
});
});
```
上面的代码中,我们在getUserInfo()的回调函数中嵌套了一个getOrderInfo()的回调函数,这样的代码嵌套层级很深,不易于维护。我们可以使用Promise的链式调用来改写代码:
```javascript
getUserInfo()
.then(userInfo => getOrderInfo(userInfo.id))
.then(orderInfo => console.log(orderInfo));
```
这样的代码看起来更加简洁清晰,而且没有嵌套。每个then方法返回的都是一个新的Promise对象,因此可以链式调用。如果前面的Promise对象的状态为resolved,后面的Promise对象就会接收到前面的结果,如果前面的Promise对象的状态为rejected,后面的Promise对象就会直接跳到catch方法中处理错误。