Promise
作用:
The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.
Promise 對象是 JavaScript 的異步操作解決方案,爲異步操作提供統一接口。它起到代理作用(proxy),充當異步操作與回調函數之間的中介,使得異步操作具備同步操作的接口。Promise 可以讓異步操作寫起來,就像在寫同步操作的流程,而不必一層層地嵌套回調函數。
定義
new Promise(
/* executor */
function(resolve, reject) { ... }
);
實例
異步請求一張網絡圖片
let data = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1527252256191&di=7b25587cff2e776e89552261e850e286&imgtype=0&src=http%3A%2F%2Fimg4.duitang.com%2Fuploads%2Fitem%2F201504%2F12%2F20150412H1301_ZH4Mw.jpeg';
console.log('promise前面');
// 異步
let p = new Promise(function(resolve, reject) {
let img = new Image(); // 創建一個圖片
img.src = data; // 給這個圖片添加一個地址
// 請求成功了
img.onload = function() {
resolve(this);
};
// 請求失敗了
img.onerror = function() {
reject('圖片請求失敗了');
};
console.log('promise本身的構造函數是一個同步')
});
console.log('promise中間');
// 成功了
p.then(function(data) {
// console.log(data);
document.body.appendChild(data);
console.log('promise執行成功');
});
// 失敗執行
p.catch(function(err) {
console.log(err);
console.log('promise執行失敗');
});
console.log('promise後面');
圖片請求成功會在瀏覽器上顯示並且打印結果:
promise前面
promise本身的構造函數是一個同步
promise中間
promise後面
promise執行成功