JavaScript异步操作:Promise与async/await详解
Promise和async/await是JavaScript处理异步操作的两种方式。本文将阐述它们的区别、优势和适用场景。
Promise
<code class="language-javascript">const fetchData = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve("数据已获取"); }, 1000); }); }; fetchData() .then((data) => console.log(data)) .catch((error) => console.error(error));</code>
.then()
处理成功结果。.catch()
处理错误。.then()
链式调用多个异步操作。.then()
链式调用比嵌套回调更清晰)。.catch()
进行明确的错误处理。.then()
时,错误处理可能需要额外注意。Async/Await
<code class="language-javascript">const fetchData = async () => { try { const data = await new Promise((resolve, reject) => { setTimeout(() => { resolve("数据已获取"); }, 1000); }); console.log(data); } catch (error) { console.error(error); } }; fetchData();</code>
async
关键字声明返回Promise的函数。await
暂停执行,直到Promise完成。try...catch
处理错误。.then()
链式调用相比,语法更清晰易懂。try...catch
用于集中式错误处理。async
声明的函数内使用。何时使用
Promise:
Async/Await:
组合使用
可以将async/await与Promise结合使用,以实现高级用例:
<code class="language-javascript">const fetchData = () => { return new Promise((resolve, reject) => { setTimeout(() => resolve("数据已获取"), 1000); }); }; const processData = async () => { try { const data = await fetchData(); console.log(data); } catch (error) { console.error(error); } }; processData();</code>
以上是使用异步 /等待与承诺的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!