Promise链式调用是一种处理异步操作的方法,它允许你将多个异步操作按顺序执行,并在每个操作完成后处理返回的结果。以下是Promise链式调用的基本概念和用法:
- 基本概念 :
-
then
方法用于指定当Promise状态改变时应该执行的回调函数。 -
then
方法返回一个新的Promise对象。 -
then
方法可以接收两个参数:成功回调函数和失败回调函数。 -
如果
then
方法返回一个普通值(非Promise对象),新的Promise对象会立即进入成功状态,并且其值为这个普通值。 -
如果
then
方法返回一个Promise对象,新的Promise对象会等待这个返回的Promise对象完成(即成功或失败),然后根据返回的结果进入相应的状态。
- 链式调用示例 :
let p = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(10);
}, 1000);
});
p.then(result => {
console.log(result); // 输出:10
return result + 10; // 返回普通值
}).then(result => {
console.log(result); // 输出:20
}).catch(error => {
console.log(error); // 如果有错误,这里会捕获
});
- 错误处理 :
-
catch
方法用于处理Promise链中的错误。 -
它等同于在
then
方法中只传递第二个参数(失败回调函数)。
- 中止Promise链 :
-
如果在某个
then
方法中需要中止Promise链,可以调用reject
函数。 -
如果
then
方法返回一个非Promise值,且该值不是undefined
,新的Promise对象会立即进入失败状态。
- 返回Promise :
-
为了使
then
方法能够返回一个新的Promise对象,你需要在回调函数中返回一个Promise对象或者一个普通值。 -
如果
then
方法返回一个Promise对象,那么链式调用会继续等待这个Promise对象完成。
通过以上概念和示例,你可以更好地理解和使用Promise链式调用来处理异步操作。