AJax技术

ajax设计方案(五):集成promise规范 更优雅的书写代码(2)

字号+ 作者:H5之家 来源:H5之家 2017-07-03 14:01 我要评论( )

ajax集成proise代码(默认只开放了post和get方法,其他可自己拓展) //集成promise的ajax请求(默认设置post和get请求,如有其他需求,可自己拓展)promiseAjax:function (url,data,type){if (!window.Promise) tool.

ajax集成proise代码(默认只开放了post和get方法,其他可自己拓展)

     //集成promise的ajax请求(默认设置post和get请求,如有其他需求,可自己拓展) promiseAjax:function (url,data,type){ if (!window.Promise) tool.createPromise(); //保证浏览器的兼容性 return new Promise(function(resolve, reject){ if (type === undefined) ajax.post(url,data,resolve,reject); else ajax.get(url,data,resolve,reject); }); },

测试环节

对于网上很多人写的Promise代码仔细观摩和研究,发现很多问题。

a. 对于并发Promise,会出现异步错乱,发起者和接受者错乱

b. 对于多then的情况,异步响应的不确定(高低延迟),错乱。

c. Promise代码实现的复杂性,多繁琐,难理解,思路不明确。

针对以上问题,进行重要测试。

测试前端代码

ajax.promiseAjax("api/ajax/postReq/",{"name":"q","age": 2}) .then(function(value){ console.log("一般请求q"+value); return ajax.promiseAjax("api/ajax/postReqSleep/",{"name":"w","age": 2}); }) .then(function(value){ console.log("高延迟请求w:"+value); return ajax.promiseAjax("api/ajax/postReq/",{"name":"r","age": 2}); }) .then(function(value){ console.log("一般请求r:"+value); }); ajax.promiseAjax("api/ajax/postReqSleep/",{"name":"q1","age": 2}) .then(function(value){ console.log("高延迟请求q1"+value); return ajax.promiseAjax("api/ajax/postReqSleep/",{"name":"w2","age": 2}); }) .then(function(value){ console.log("高延迟请求w2:"+value); return ajax.promiseAjax("api/ajax/postReq/",{"name":"r3","age": 2}); }) .then(function(value){ console.log("一般请求r3:"+value); });

后端模拟延迟请求代码(C#)

[Route("postReqSleep")] public string postRequestTSleep([FromBody]Param param) { Thread.Sleep(5000); //挂起5s 做延迟 String result = "post请求成功:" + param.name + "-" + param.age; return result; }

测试结果:

chrome

ie8-11

edge

firefox

360浏览器

safair

代码已集成github: https://github.com/GerryIsWarrior/ajax       点颗 星星 是我最大的鼓励,有什么问题可以博客、邮箱、github上留言

还有 最重要的一点 ,如果有问题欢迎指出来,我在github上维护这个库,这段时间专注于前端的通信技术的研究,ajax基本完成,马上进入SSE推送技术研究状态

研究Promise这个内容,研究和参考了很多别人的代码,从高别人的代码中看到了各种问题,然后在自己代码中测试发现和改正。所以没有什么是绝对正确的,我写的可能也有问题,希望大家在研究和发展的基础上一起改进。毕竟对于前端来说,技术更新太快,ES5 ES6等等一层接一层。还是那句老话,革命尚未成功,同志仍需努力,我和你们同在。

马上又要回去重新找工作了,希望可以找到如意的工作,毕竟为了错开金三银四,希望一切都会好起来。一起加油吧。

分享给小伙伴们:

本文标签: promise,ajax/">promise,ajax

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

  • 本类最热新闻

  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • ASP.NET AJAX调用 WebService

      ASP.NET AJAX调用 WebService

      2017-07-03 15:03

    • JavaScript初探系列之Ajax应用

      JavaScript初探系列之Ajax应用

      2017-07-03 14:00

    •  ajax技术中的Session的应用

      ajax技术中的Session的应用

      2017-07-03 13:13

    • javascript ajax 简易的封装

      javascript ajax 简易的封装

      2017-07-02 11:04

    网友点评
    =