Promise是一种用于处理异步操作的对象,它表示一个异步操作的最终完成(或失败),以及其结果值。
要创建一个Promise对象,可以使用new Promise()
构造函数,它接受一个带有两个参数的函数作为参数。这两个参数分别是resolve
和reject
,分别表示成功和失败的回调函数。
const promise = new Promise((resolve, reject) => {
// 异步操作
if (/* 操作成功 */) {
resolve('成功');
} else {
reject('失败');
}
});
一个Promise对象有三种状态:Pending(进行中)、Fulfilled(已成功)和Rejected(已失败)。当Promise创建时,它处于Pending状态,然后可以通过resolve()
或reject()
方法改变状态。
可以使用.then()
方法来处理Promise对象的状态。.then()
方法接受两个参数,分别是成功时的回调函数和失败时的回调函数。
promise.then((result) => {
console.log('成功', result);
}).catch((error) => {
console.log('失败', error);
});
可以使用.then()
方法多次调用,形成Promise链,实现多个异步操作依次执行。
promise.then((result) => {
console.log('第一步成功', result);
return '第二步';
}).then((result) => {
console.log('第二步成功', result);
}).catch((error) => {
console.log('失败', error);
});
Promise.all()
接受一个Promise对象数组作为参数,返回一个新的Promise对象,当所有Promise对象都成功时,该Promise对象也成功,否则失败。
const promise1 = new Promise((resolve) => setTimeout(resolve, 100, 'one'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 200, 'two'));
Promise.all([promise1, promise2]).then((values) => {
console.log(values); // ['one', 'two']
});
Promise.race()
接受一个Promise对象数组作为参数,返回一个新的Promise对象,只要有一个Promise对象成功或失败,该Promise对象就会立即返回。
const promise1 = new Promise((resolve) => setTimeout(resolve, 100, 'one'));
const promise2 = new Promise((resolve) => setTimeout(resolve, 200, 'two'));
Promise.race([promise1, promise2]).then((value) => {
console.log(value); // 'one'
});
以上就是关于Promise的基本使用教程,希服对你有所帮助。如果有任何问题,请随时提问。