javascript promise 实现异步操作顺序执行的核心方法是使用 .then() 链式调用或 async/await 语法。通过链式调用,前一个 promise 的 .then() 返回一个新的 promise,后续操作会等待该 promise 完成后再执行;而 async/await 则允许在异步代码中直接使用 await 关键字暂停当前函数的执行,直到 promise 状态变为 fulfilled,从而以同步的方式编写顺序执行的逻辑。

Promise 链式调用的具体实现方式
使用 .then() 链式调用是处理顺序执行的基础方式。每个 .then() 接收上一个 Promise 的结果作为参数,并返回一个新的 Promise。如果返回的是普通值,下一个 .then() 会立即接收到该值;如果返回的是另一个 Promise,下一个 .then() 会等待该 Promise 完成。这种方式适合需要处理多个步骤且每一步依赖上一步结果的场景。

function step1() {
return new Promise(resolve => {
setTimeout(() => {
console.log('Step 1 completed');
resolve('Result 1');
}, 1000);
});
}
function step2(data) {
return new Promise(resolve => {
setTimeout(() => {
console.log('Step 2 completed with data:', data);
resolve('Result 2');
}, 1000);
});
}
step1()
.then(result1 => {
console.log('Received from step 1:', result1);
return step2(result1);
})
.then(result2 => {
console.log('Final result:', result2);
})
.catch(error => {
console.error('An error occurred:', error);
});
Async/Await 语法的顺序执行优势
async/await 是 ES2017 引入的语法糖,基于 Promise 构建,使异步代码看起来像同步代码。使用 await 关键字可以暂停 async 函数的执行,直到 Promise 被解决。这种方式提高了代码的可读性,避免了深层嵌套的回调或链式调用,特别适合处理复杂的异步流程。

async function executeSteps() {
try {
const result1 = await step1();
console.log('Received from step 1:', result1);
const result2 = await step2(result1);
console.log('Final result:', result2);
} catch (error) {
console.error('An error occurred:', error);
}
}
executeSteps();
如何处理 Promise 链中的错误
在 Promise 链式调用中,任何一步抛出错误或返回 rejected 状态的 Promise 都会导致后续 .then() 被跳过,直接跳转到最近的 .catch() 块。在 async/await 中,可以使用 try/catch 语句捕获错误。确保在每个异步操作后添加适当的错误处理,以避免未处理的 Promise rejection。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











