/* 定义一个使用promise的ajax请求,这里依赖jquery 参数中请求url为必填参数 */ const ajaxpromise= param => { return new promise((resovle, reject) => { $.ajax({ type:param.type || get, async:param.async || true, url:param.url, data:param.data || , success: res => { resovle(res); }, error: err => { reject(err); } }) }) } /* 第一个请求 */ let step1 = () => { ajaxpromise({ url:, }).then(res => { console.log(第一个请求正确返回==>+res); step2(res); }).catch(err => { console.log(第一个请求失败); }) } /* 第二个请求 */ let step2 = (res) => { ajaxpromise({ type:get, url:, data:{name:res} }).then(res => { console.log(第二个请求正确返回==>+res); }).catch(err => { console.log(第二个请求失败==>+err); }) } step1();
原生js写ajaxpromise对象
const ajaxpromise = param => { return new promise((resovle, reject) => { var xhr = new xmlhttprequest(); xhr.open(param.type || get, param.url, true); xhr.send(param.data || null); xhr.onreadystatechange = () => { var done = 4; // readystate 4 代表已向服务器发送请求 var ok = 200; // status 200 代表服务器返回成功 if(xhr.readystate === done){ if(xhr.status === ok){ resovle(json.parse(xhr.responsetext)); } else{ reject(json.parse(xhr.responsetext)); } } } }) }
关于promise使用时的几点:
使用方法:先创建一个promise对象new promise(),根据业务需求判断执行成功或失败,成功调用resovle(),失败则调用reject()。
promise对象的then(onfulfilled,onrejected)有两个参数,成功执行onfulfilled,失败执行onrejectd
p.then(function(value) { // fulfillment成功 }, function(reason) { // rejection失败 }); //不过通常会使用catch()来捕获失败,上段代码通常写为: p.then(function(value) { // fulfillment成功 }).catch(function(reason) { //rejection失败 })
promise对象的then()会返回一个新的promise对象
相关推荐:
微信小程序promise简化回调实例分享
jquery的promise如何正确使用
关于promise对象的简单用法
以上就是ajax和promise的结合使用方法分享的详细内容。
