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中文網其他相關文章!