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对象简化了回调函数的嵌套,使得异步操作以同步操作的流程表达出来,大大提高了代码的可读性。