前端,es6中的promise异步方法,及用的场景
网上看了些资料,总结以下几种方法
1,数据管道方法,这个方法用的场景:URL1请求返回的数据1,请求URL2的传参是数据1,返回数据2,请求URL3的参数是数据2.
new Promise(function(resolve, reject) {
resolve(1);
})
.then(function(res) {//1
return new Promise(function(resolve, reject) {
resolve(res+1);//2
});
})
.then(function(res) {
return new Promise(function(resolve, reject) {
resolve(res+1);//3
});
})
.then(function(res) {
console.log(res,"结果");//返回3
})
2.用promise请求url,return一个promise对象,解决异步方法嵌套问题
ajax(参数){
return new Promise((resolve, reject)=>{
ajax(参数,res=>{
if(res.status == '200'){
try{
resolve (JSON.parse(返回成功的结果))//返回成功的结果
} catch (e){
reject(e)//失败的结果
}
}
})
})
}
ajax(url).then(
res =>{
console.log(res))/返回成功的结果
}
)
.catch(err =>{
console.log(err)
})
3.promise.all, 使用场景请求多个ajax,放在一个变量里面,等到结果全部请求成功后供其他方法使用。
let list=(time)=>{
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve(`${time/1000}秒后出来`)
},time)
})
}
let p1=list(3000)
let p2=list(2000)
Promise.all([p1,p2])
.then((res)=>{
//就算p1请求的时间长,也要等他数据出来后,才打印出[p1,p2]。这个谁放在前边,先请求谁。可以加载loading室使用这个方法
console.log(res)// ["3秒后出来", "2秒后出来"]
})
.catch((err)=>{
console.log(err)
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了