- Objective:
- Breadcrumb:
# 概念阐释
# 实例
# 相关内容
# 问题
没有链式调用的情况下返回的结果

[[js Iterators 数组函数内置对象 every()]])的用法

如何通过[[js 异步 Promise.then()方法]]解析resolve值并传入下一个函数

返回的结果

## 2个常见错误
- 嵌套而没有链式调用
- 忘记写return
- 写出正确写法
```js
checkInventory(order)
.then((resolvedValueArray) => {
processPayment(resolvedValueArray)
.then((resolvedValueArray) => {
shipOrder(resolvedValueArray)
.then((successMessage) => {
console.log(successMessage);
});
});
});
```
# 问题答案
## 常见错误的正确写法
```js
checkInventory(order).then((resolvedValueArray)=>{
return processPayment(resolvedValueArray);
})
.then((resolvedValueArray)=>{
return shipOrder(resolvedValueArray);
})
.then((successMessage)=>{
console.log(successMessage);
});
```
## 为什么errorMessage捕获 Promise 链中的任何拒绝(rejected)状态,successMessage仅捕获shipOrder的resolve值?
在一个 Promise 链中,如果任何一个 Promise 被拒绝(rejected),它不会继续执行后面的 `.then()` 语句,而是直接跳到最近的 `.catch()` 语句。因此,`.catch()` 可以捕获链中的任何拒绝,不仅仅是它之前的一个 Promise。
# 参考资料
`/my-projects/Promise链式调用 - 支付流程`