推荐答案
Promise 的 then 方法用于处理 Promise 对象的成功状态(fulfilled)或失败状态(rejected)。它接收两个回调函数作为参数:
- 第一个回调函数(
onFulfilled)在Promise成功时被调用,并接收Promise的解析值(resolved value)作为参数。 - 第二个回调函数(
onRejected)在Promise失败时被调用,并接收Promise的拒绝原因(rejection reason)作为参数。
then 方法返回一个新的 Promise 对象,允许链式调用。
// www.javascriptcn.com code example
promise.then(
(value) => {
// 处理成功状态
console.log('成功:', value);
},
(reason) => {
// 处理失败状态
console.error('失败:', reason);
}
);本题详细解读
then 方法的作用
处理成功状态:当
Promise被成功解析时,then方法的第一个回调函数会被调用,并接收解析值作为参数。这个回调函数通常用于处理异步操作的成功结果。处理失败状态:当
Promise被拒绝时,then方法的第二个回调函数会被调用,并接收拒绝原因作为参数。这个回调函数通常用于处理异步操作的失败情况。链式调用:
then方法返回一个新的Promise对象,这使得可以继续调用then方法,形成链式调用。每个then方法都可以处理前一个Promise的结果,并返回一个新的Promise。错误传播:如果在
then方法的回调函数中抛出异常,或者返回一个被拒绝的Promise,这个异常或拒绝原因会被传递给链中的下一个catch或then的第二个回调函数。
示例代码
// www.javascriptcn.com code example
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
const success = true;
if (success) {
resolve('操作成功');
} else {
reject('操作失败');
}
}, 1000);
});
promise.then(
(value) => {
console.log(value); // 输出: 操作成功
return '继续处理';
},
(reason) => {
console.error(reason); // 不会执行
}
).then(
(value) => {
console.log(value); // 输出: 继续处理
}
);在这个示例中,promise 在 1 秒后被成功解析,then 方法的第一个回调函数被调用,并输出 操作成功。然后,它返回一个新的值 继续处理,这个值被传递给下一个 then 方法的回调函数,并输出 继续处理。