JavaScript Promise对象
JavaScript Promise对象是ES6中提出的一种新的异步处理方式,它有三个状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。Promise对象可以让异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数,提高了代码的可读性。
Promise对象实现方法
Promise对象可以使用ES6中的Promise构造函数来实现,构造函数接受一个函数作为参数,该函数有两个参数,分别是resolve和reject,它们是两个函数,用于改变Promise的状态。
let promise = new Promise(function(resolve, reject) {
// 异步操作
if (/* 异步操作成功 */) {
resolve(value);
} else {
reject(error);
}
});
Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数:
promise.then(function(value) {
// success
}, function(error) {
// failure
});
Promise对象应用示例
下面是一个使用Promise对象实现的异步加载图片的示例:
function loadImage(url) {
return new Promise(function(resolve, reject) {
let image = new Image();
image.onload = function() {
resolve(image);
};
image.onerror = function() {
let message = 'Could not load image at ' + url;
reject(new Error(message));
};
image.src = url;
});
}
let promise = loadImage('https://example.com/image.png');
promise.then(function(image) {
// 加载成功
document.body.appendChild(image);
}, function(error) {
// 加载失败
console.log(error);
});
上面的示例中,使用Promise对象简化了回调函数的嵌套,使得异步操作以同步操作的流程表达出来,大大提高了代码的可读性。