Promise是一个Javascript对象,是异步操作与回调函数 的中介,让异步操作具有同步操作的接口,解决异步处理的回调函数地狱问题,让写法更加清晰。
什么是回调地狱?可以看看回调地狱 Promise只有三种状态:
- pedding:初始状态,既没有成功也没失败
- fulfilled:按照函数预期执行成功,调用resolve() (即操作成功后要做的事情)
- rejected:没有按照预期执行(执行失败),调用reject() (即操作失败后要做的事情)
Promise的语法糖:async await Promise的底层:Promise底层讲解 构建自己的Promise
基本结构
const promise = new Promise((resolve, reject) => {
// 模拟异步操作,比如请求数据
setTimeout(() => {
const success = true;
if (success) { //如果按照预期成功
resolve("成功啦!");
} else { //如果出错
reject("出错了!");
}
}, 1000);
});
// 使用 Promise
promise
.then(result => {
console.log(" then接收到的:", result); // 这就是 resolve() 传来的参数 result
})
.catch(error => {
console.log("catch接收到的:", err); // 这就是 reject() 传来的参数error
});
Promise 的最佳实践
- 总是返回Promise对象
- 封装异步操作时用Promise
reference
https://wangdoc.com/javascript/async/promise https://es6.ruanyifeng.com/#docs/promise