2021-03-14
阅读:18
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理
Promise对象接受两个参数,用来将状态标记为已成功、或者已失败
let p1 = new Promise((resolve,reject) =>{
setTimeout(()=>{
resolve('success');//两秒后标记为成功
},2000)
});
// Promise 对象的then方法返回 resolve函数传递的参数
p1.then((res) =>{
console.log(res);//success
})
let p2 = new Promise((resolve,reject) =>{
setTimeout(()=>{
reject('error');//两秒后标记为失败
},2000)
});
// Promise 对象的catch方法返回 reject函数传递的参数
p2.then((res) =>{
console.log(res);
}).catch((err)=>{
console.log(err);//error
})
如果我们创建Promise后,即标记了成功,又标记了失败,会发生什么呢?
let p1 = new Promise((resolve,reject)=>{
console.log('---标记成功---');
resolve('success');
console.log('---标记失败---');
reject("error");
});
p1.then((res)=>{
console.log(res);
}).catch((err)=>{
console.log(err);
});
console.log('Promise');
在控制台上,可以看到输出结果
Promise在创建之后会立即执行,resolve、reject 标记promise状态之后并不会阻止后续方法继续进行,但 promise在状态发生变化之后就不会再改变,所以,再 resolve 标记成功之后, reject不起作用