promise解决回调地狱问题
//promise解决回调地狱问题
function eat(fn) {
setTimeout(() => {
fn('吃饭')
}, 2000)
}
function xizao(fn) {
setTimeout(() => {
fn('洗澡')
}, 1000)
}
eat(function (data) {
console.log(data)
xizao(function (data) {
console.log(data)
xizao(function (data) {
console.log(data)
xizao(function (data) {
console.log(data)
})
})
})
}
)
//异步函数的调用会产生回调地狱,代码会像一坨屎
function eat() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('吃饭')
}, 2000)
})
}
function xizao() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('洗澡')
}, 1000)
})
}
//通过Promise的then方法解决回调地狱问题,代码会变成一行一行的,不会嵌套
eat().then((res) => {
console.log(res + '1')
return xizao()
}).then((res) => {
console.log(res + '1')
})
//通过async,await函数将异步函数以同步的形式执行
async function run() {
let eat1 = await eat()
console.log(eat1 + '2')
let xizao1 = await xizao()
console.log(xizao1 + '2')
}
run()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构