欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

ajax中promise

馮子軒1年前6瀏覽0評論

AJAX(Asynchronous JavaScript and XML)是一種用于在網頁上異步傳輸數據的技術。它允許網頁的一部分向服務器發送請求并獲取數據,而不必刷新整個網頁。在AJAX中,Promise是一種強大的概念,可以更好地處理異步代碼。

Promise是一個代表了異步操作的狀態的對象。它有三個狀態:pending(進行中)、fulfilled(已成功)和rejected(已失敗)。當我們發起一個AJAX請求時,服務器端可能會立即返回數據或需要一些時間。我們可以利用Promise來處理這種情況,以便在異步操作完成后執行相關的代碼。

var promise = new Promise(function(resolve, reject) {
// 異步操作
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/api/data', true);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
resolve(xhr.responseText);
}
};
xhr.onerror = function() {
reject('請求失敗');
};
xhr.send();
});
promise.then(function(data) {
console.log(data);
}).catch(function(errorMessage) {
console.error(errorMessage);
});

在上面的例子中,我們創建了一個Promise,并執行了一個異步操作。當操作成功完成時,我們調用resolve方法來告訴Promise已經完成,并傳遞返回的數據。如果操作失敗,我們調用reject方法并傳遞錯誤信息。

然后,我們通過調用Promise的then方法來注冊一個回調函數,在成功時執行。如果操作失敗,我們可以通過調用catch方法來注冊一個錯誤處理程序。

var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('Hello');
}, 2000);
});
var promise2 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('World');
}, 3000);
});
Promise.all([promise1, promise2]).then(function(values) {
console.log(values[0] + ' ' + values[1]);
});

在這個例子中,我們創建了兩個Promise。每個Promise都會在一個定時器中延遲2秒或3秒后執行resolve方法。然后,我們使用Promise.all方法來等待兩個Promise都完成,并在它們都成功時執行回調函數。這樣,我們就可以在2秒后獲得'Hello',在3秒后獲得'World',并將它們連接起來輸出。

var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
reject('Error 1');
}, 2000);
});
var promise2 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('World');
}, 3000);
});
Promise.all([promise1, promise2]).then(function(values) {
console.log(values[0] + ' ' + values[1]);
}).catch(function(errorMessage) {
console.error(errorMessage);
});

在這個例子中,我們故意讓第一個Promise在2秒后失敗,并在第二個Promise在3秒后成功。當我們使用Promise.all來等待這兩個Promise時,由于第一個Promise失敗了,Promise.all會立即觸發錯誤處理程序,并顯示錯誤信息。因此,我們將在2秒后得到錯誤信息,并不會等待第二個Promise執行。

總而言之,Promise在AJAX中發揮著重要的作用。它允許我們更好地處理異步操作,并提供了更靈活的方式來處理成功和失敗的狀態。無論是處理單個Promise還是多個Promise,使用Promise能夠使我們的代碼更加清晰和易于管理。