
// 封装一个简单的proimse方法
class customPromise {
constructor (callback) {
//成功结果
this.successResult = ''
//失败结果
this.failResult = ''
// 当前状态
this.status = 'pending'
//当状态没有改变时,将then方法的回调函数保存起来
this.query = {}
callback(param => {
this.successResult = param
//改变状态为成功
this.status = 'fulfilled'
//状态改变成功,执行保存then方法保存的回调函数
console.log('this.query',this.query)
this.query.resolve(param)
},param => {
this.failResult = param
//改变状态为失败
this.status = 'rejected'
this.query.reject(param)
})
}
//调用then方法,状态并未改变,将then方法执行的回调保存起来,等到异步代码执行
//完成后,在统一执行then方法的回调函数
then (onresolve, onreject) {
if(this.status === 'fulfilled') success(this.successResult)
else if (this.status === 'rejected') onreject(this.failResult)
else Object.assign(this.query,{resolve: onresolve, reject: onreject})
}
}
let myProimse = new customPromise((resolve, reject) => {
$.ajax({
url: 'http://.....',
type: 'get',
data: {'data': 'data'},
dataType: 'json',
success: (data)=>{resolve(data)},
error: (xhr, status, err)=>{reject(err)}
})
})
.then(data => {
console.log('data:',data)
},err => {
console.log("err",err)
})

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!