回调地狱:某个异步操作需要等待之前的异步操作完成,无论回调是事件还是其他函数,都会陷入不断的嵌套(简单来说就是无数的嵌套函数)
Promise的出现,可以将异步操作以同步的流程表达出来,很好的解决了回调地狱
Promise对象是一个构造函数,该函数有两个参数:
-
resolve:在异步操作成功时调用,并将异步操作的结果,作为参数传递出去
-
reject:在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去
const p = new Promise(function(resolve,reject){
console.log(‘one’);
resolve(‘three’);
});
p.then(resolve => {
console.log(resolve);
}, err => {
console.log(err);
});
console.log(‘tow’);
- Promise 新建后就会立即执行
then方法
Promise
实例生成以后,可以用``分别指定resolved
状态和rejected
状态的回调函数
该方法的两个参数:
-
回调函数是Promise对象的状态变为resolved时调用(必须)
-
回调函数是Promise对象的状态变为rejected时调用(可选)
回到顶部 目录
const ajax = function(url) {
return new Promise(function(resolve, reject){
const xml = new XMLHttpRequest();
xml.open(“GET”, url, true);
xml.onreadystatechange = function() {
if (this.readyState !== 4) {
return;
}
if (this.status === 200) {
resolve(this.responseText);
} else {
reject(new Error(this.statusText));
}
};
xml.send();
});
};
ajax(“data.json”).then(res => {
console.log(res);
return res;
}).catch(err => {
console.log(err);
})
.then(function(res) {
console.log(res);
})
const getImage = function (path) {
return new Promise((resolve, reject) => {
const img = new Image();
img.onload = resolve;
img.onerror = reject;
img.src = path;
});
};
回到顶部 目录
| 方法 | 用途 |
| :-- | :-- |
| Promise.prototype.then(resolved[,rejected]) | 为Promise实例添加状态改变时的回调函数 |
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
![](https://i-blog.csdnimg.cn/blog_migrate/f522b294cf87d5ff33434af1992b0b78.jpeg)
最后
资料过多,篇幅有限,需要文中全部资料可以点击这里免费获取前端面试资料PDF完整版!
自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。
/>
最后
[外链图片转存中…(img-ldirMGLt-1712098501963)]
[外链图片转存中…(img-SwXiyoXl-1712098501963)]
资料过多,篇幅有限,需要文中全部资料可以点击这里免费获取前端面试资料PDF完整版!
自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。