在 JavaScript 中,Promise
是一種用于處理異步操作的工具婿奔。它允許您定義一個函數(shù)问慎,該函數(shù)返回一個 Promise
對象,該對象可以在未來某個時間點解析(成功)或拒絕(失斎绲稹)。當(dāng) Promise
解析時笼恰,您可以執(zhí)行一些回調(diào)函數(shù)來處理結(jié)果;當(dāng) Promise
拒絕時逼龟,您可以執(zhí)行一些錯誤處理代碼追葡。
下面是一個使用 Promise
的示例代碼片段:
function fetchData(url: string): Promise<any> {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = () => {
if (xhr.status === 200) {
resolve(xhr.responseText);
} else {
reject(new Error(`請求失敗奕短,狀態(tài)碼:${xhr.status}`));
}
};
xhr.onerror = () => {
reject(new Error('網(wǎng)絡(luò)錯誤'));
};
xhr.send();
});
}
// 使用 Promise 進(jìn)行異步操作
fetchData('https://api.example.com/data')
.then(response => {
console.log('請求成功');
console.log(response);
})
.catch(error => {
console.error('請求失敗');
console.error(error);
});
在這個示例中匀钧,我們定義了一個名為 fetchData
的函數(shù),該函數(shù)接受一個 URL 參數(shù)之斯,并返回一個新的 Promise
對象。在 Promise
構(gòu)造函數(shù)內(nèi)部达椰,我們創(chuàng)建了一個新的 XMLHttpRequest
對象翰蠢,并設(shè)置了其 onload
和 onerror
事件處理器。當(dāng)請求成功時檀何,我們調(diào)用 resolve
函數(shù)并將響應(yīng)數(shù)據(jù)作為參數(shù)傳遞給它廷支;當(dāng)請求失敗時,我們調(diào)用 reject
函數(shù)并將一個包含錯誤信息的對象作為參數(shù)傳遞給它恋拍。
然后,我們在主程序中調(diào)用了 fetchData
函數(shù)周荐,并使用 .then()
方法和 .catch()
方法來處理 Promise
的解析和拒絕情況概作。如果請求成功,我們將輸出一條消息并打印出響應(yīng)數(shù)據(jù)讯榕;如果請求失敗匙睹,我們將輸出一條錯誤消息并打印出錯誤對象罕袋。
請注意,Promise
類是 JavaScript 標(biāo)準(zhǔn)庫的一部分,因此不需要單獨安裝任何依賴狼忱。如果您需要在非瀏覽器環(huán)境中使用類似的功能窘俺,可能需要使用不同的庫或 API。