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执行成功