// 封装一个简单的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) })
node_ 封装简单的promise方法
猜你喜欢
转载自www.cnblogs.com/JunLan/p/12437428.html
今日推荐
周排行