Web前端 -- ES6 -- Promise
Web前端 -- ES6 -- Promise
服务器模拟数据
studen.json
{
"id": 100,
"name": "jack",
"class_id": 10
}
class_10.json
{
"id": 10,
"name": "java工程师班级",
"student_num": 30,
"school_id": 9
}
studen.json
{
"id": 100,
"name": "jack",
"class_id": 10
}
ajax回调地狱
<script type="text/javascript" src="jquery-3.6.0.min.js"></script>
<script type="text/javascript">
$.ajax({
url: "studen.json",
success(replyData) {
console.log("1replyData = ", replyData);
$.ajax({
url: `class_${replyData.class_id}.json`,
success(replyData) {
console.log("2replyData = ", replyData);
$.ajax({
url: `school_${replyData.school_id}.json`,
success(replyData) {
console.log("3replyData = ", replyData);
},
error(err) {
console.log("err = ", err);
}
})
},
error(err) {
console.log("err = ", err);
}
})
},
error(err) {
console.log("err = ", err);
}
})
</script>
使用Promise重排改善
<script type="text/javascript" src="jquery-3.6.0.min.js"></script>
<script type="text/javascript">
//Promise重排抽取模板工具方法
function getPromise(url, data){
return new Promise((resolve, reject) =>{
$.ajax({
url:url,
data: data,
success(replyData){
resolve(replyData)
},
error(err){
reject(err)
}
})
})
}
//实现代码
getPromise("studen.json")
.then(replyData => {
console.log("1replyData = ", replyData)
return getPromise(`class_${replyData.class_id}.json`)
})
.then(replyData => {
console.log("2replyData = ", replyData)
return getPromise(`school_${replyData.school_id}.json`)
})
.then(replyData => {
return console.log("3replyData = ", replyData)
})
.catch(err => {
console.log("err=",err)
})
</script>
标签:
JavaScript语言
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?