Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。
最主要的作用是防止回调地狱
Promise 创建
要想创建一个 promise 对象、可以使用 new 来调用 Promise 的构造器来进行实例化。
下面是创建 promise 的步骤:
var myCake = new Promise(function (resolve, reject) {
setTimeout(()=>{
console.log("蛋糕做好了");
resolve("cake")
}, 3000);
})
Promise.prototype.then方法:链式操作
Promise.prototype.then 方法返回的是一个新的 Promise 对象,因此可以采用链式写法。
myCake.then((successCallback)=>{
console.log("我要吃" + successCallback);
return new Promise((resolve, reject) => {
setTimeout(
function () {
console.log("面包做好了");
resolve("面包")
},5000
)
})
}).then((bread)=>{
console.log("我要吃" + bread);
})
上面的代码使用 then 方法,依次指定了两个回调函数。第一个回调函数完成以后,会将返回结果作为参数,传入第二个回调函数。
如果前一个回调函数返回的是Promise对象,这时后一个回调函数就会等待该Promise对象有了运行结果,才会进一步调用。
Promise.prototype.catch方法:捕捉错误
Promise 对象的错误具有"冒泡"性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个 catch 语句捕获。
myCake.then((successCallback)=>{
console.log("我要吃" + successCallback);
return new Promise((resolve, reject) => {
setTimeout(
function () {
console.log("面包做好了");
resolve("面包")
},5000
)
})
}).then((bread)=>{
console.log("我要吃" + bread);
}).catch(function (error) {
// 处理前两个回调函数的错误
})