JavaScript中的Promise是什麼?
在JavaScript中,Promise可以用來簡化非同步程式設計,使處理非同步操作(如I/O操作或與外部系統或機器通訊)更容易。Promise是表示非同步操作最終完成或失敗及其結果值的物件。它們提供了一種簡單的方法來處理非同步程式碼,使我們能夠編寫更清晰、更易讀的程式碼。在本教程中,我們將瞭解JavaScript中的Promise是什麼,以及如何使用它們將非同步程式設計行為融入我們的控制流。
Promise有三種狀態:
等待中 - Promise在被resolve或reject之前的初始狀態。
已完成 - 表示非同步操作成功完成的狀態,產生一個值。
已拒絕 - 表示非同步操作失敗的狀態,產生一個錯誤。
讓我們來看一些例子來更好地理解這個概念:
示例1 - 使用.then/.catch語法
在這個例子中,我們將:
建立一個返回Promise的performAsyncTask()函式。
在Promise的主體中,我們將建立一個非同步任務,如果數字大於0.5,則用隨機數解析Promise;否則,用錯誤訊息拒絕Promise。
檔名 - index.html
<html>
<head>
<title>What are Promises in JavaScript?</title>
<script>
function performAsyncTask() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const randomNumber = Math.random();
if (randomNumber > 0.5) {
resolve(randomNumber);
} else {
reject("Failed to perform the task.");
}
}, 2000);
});
}
performAsyncTask()
.then((result) => {
console.log("Task completed successfully. Result: " + result);
})
.catch((error) => {
console.log("Task failed. Error: " + error);
});
</script>
</head>
<body>
<h1>What are Promises in JavaScript?</h1>
</body>
</html>
輸出
結果將類似於下面的圖片。

示例2 - 使用async/await語法
在這個例子中,我們將:
建立一個返回Promise的fetchData()函式。
在Promise的主體中,我們將建立一個非同步任務,在2秒延遲後,用包含示例資料的物件解析Promise。
檔名 - index.html
<html>
<head>
<title>What are Promises in JavaScript?</title>
<script>
function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve({ data: "Sample data" });
}, 2000);
});
}
async function getData() {
try {
const result = await fetchData();
console.log("Data: ", result.data);
} catch (error) {
console.log("Error: ", error);
}
}
getData();
</script>
</head>
<body>
<h1>What are Promises in JavaScript?</h1>
</body>
</html>
輸出
結果將類似於下面的圖片。

結論
總而言之,Promise是JavaScript中一個重要的特性,它簡化了非同步程式設計。它們是表示非同步操作最終完成或失敗及其結果值的物件。我們學習了使用不同方法的JavaScript中的Promise,並透過一些例子進行了說明。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP