闽公网安备 35020302035485号
Rejected(已拒绝) :操作失败。
const promise = new Promise((resolve, reject) => {
const success = true;
if (success) {
resolve('操作成功!');
} else {
reject('操作失败!');
}
});
promise.then((result) => {
console.log(result); // 操作成功!
}).catch((error) => {
console.error(error);
});
在这个示例中,我们创建了一个新的 Promise,并在构造函数中传递了一个执行器函数,该函数包含两个参数:resolve 和 reject。当异步操作成功时,调用 resolve(),否则调用 reject()。通过 then() 方法可以处理成功的结果,而通过 catch() 方法可以处理错误。const promise = new Promise((resolve, reject) => {
setTimeout(() => resolve(1), 1000);
});
//堆代码 duidaima.com
promise
.then((result) => {
console.log(result); // 1
return result * 2;
})
.then((result) => {
console.log(result); // 2
return result * 2;
})
.then((result) => {
console.log(result); // 4
});
在上面的代码中,每个 then() 返回的值都会被传递给下一个 then()。通过这种方式,我们可以串联多个异步操作,并且确保它们按照正确的顺序执行。const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values); // [3, 42, "foo"]
});
3.2 Promise.race()const promise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then((value) => {
console.log(value); // "two"
});
在这个例子中,promise2 先完成,因此 Promise.race() 返回的是 promise2 的值。async function fetchData() {
return '数据获取成功!';
}
fetchData().then(result => console.log(result)); // 数据获取成功!
4.2 await 关键字function fetchData() {
return new Promise((resolve) => {
setTimeout(() => resolve('数据获取成功!'), 2000);
});
}
async function processData() {
console.log('开始获取数据...');
const result = await fetchData();
console.log(result); // 数据获取成功!
console.log('数据处理完成');
}
processData();
在这个例子中,await 让 fetchData() 函数在 processData() 中的调用看起来像是同步的。程序会等待 fetchData() 完成后再执行下面的代码。async function processData() {
try {
const result = await fetchData();
console.log(result);
} catch (error) {
console.error('数据处理出错:', error);
}
}
try/catch 的使用方式使得错误处理变得更加简洁直观。async/await:错误处理使用 try/catch,更符合传统的同步代码风格。