首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    实用主义:Promise让异步回调更加优雅

    如果只有一个简单的异步操作,我们可以稍费脑子理清执行顺序,但是如果有多个异步方法,呃,我们就可能掉进了回调陷阱,事情远远没有我们想到的那么简单,并且我们甚至还没考虑过异步中抛出的错误。...(null); ?...(null); }); return p; } 首先封装一个Promise对象,我们把响应事件封装在resolve方法中,如果仅仅是这样,那么和普通封装没有区别,我们接着来看看...并且catch方法会捕捉每一个异步方法中的错误,所有的错误都会冒泡到这里,如果catch方法出现了错误怎么办?别担心done()方法会处理最后的错误。...最后 相比传统的ajax方法,Promise的优雅之处在于 关注点分离,每一次调用只需要完成一个任务; 更符合人脑思考逻辑; 良好的错误处理逻辑,错误冒泡; all() 和 race()方法避免陷入回调地狱

    85180

    .ajax get 写法,原生Ajax写法(GET)

    ajax的GET提交方式的原生代码: var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else...; } } xhr.send(null); } XMLHttpRequest() 这个对象可以在不重新加载页面的情况下从后台获取数据,支持的浏览器有IE7+、Firefox、Chrome、Safari...open方法) 1(初始化)已调用send()方法,正在发送请求 2(发送数据)send()方法调用完成,但是当前的状态及http头未知 3(数据传送中)已接收部分数据,因为相应及http头不全,这时通过...responseText获取部分数据会出现错误 4(完成)数据接收完成,此时可以通过responseText获取完整的数据 status 请求状态 200(成功) 404(没有发现文件) 500(服务器内部错误...) responseText 请求成功后获取数据 原生ajax写法 ajax1.0,ie9及以下,ie10+支持ajax2.0 ajax2.0比ajax1.0: 1.多了FormData对象,xhr.send

    3.6K20

    你真的会使用XMLHttpRequest吗?

    header字段,否则调用就会报Refused to get unsafe header的错误。...以下3种情况下值都为null:请求未完成、请求失败、请求成功但返回数据无法被正确解析时 如何追踪ajax请求的当前状态 在发一个ajax请求后,如果想追踪请求当前处于哪种状态,该怎么做呢?...不过即使你真传入了参数,参数也最终被忽略,xhr.send(data)中的data会被置为 null. xhr.send(data)中data参数的数据类型会影响请求头部content-type的默认值...一旦程序抛出错误,如果不 catch 就无法继续执行后面的代码,所以调用 xhr.send(data)方法时,应该用 try-catch捕捉错误。...onloadstart 调用xhr.send()方法后立即触发,若xhr.send()未被调用则不会触发此事件。

    1.9K30

    (Servlet)Ajax

    404 资源未找到 500 内部服务器错误,如asp代码错误等 onreadystatechange onreadystatechange:绑定一个事件处理函数,该函数用来处理readystatechange...2、设置回调函数:为Ajax对象的readystatechange事件设定响应函数 3、创建请求:调用XMLHttpRequest对象的open方法 4、发送请求:调用Ajax对象的send方法 1、...获取Ajax对象 function getXhr(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest...对象)不会添加该消息头,所以,需要调用setRequestHeader方法,添加这个消息头 4、发送请求 GET 请求 xhr.send(null) POST 请求 xhr.send(name =...GET请求: send方法内传递null 若要提交数据,则在open方法的“URL”后面追加 如:xhr.open(“get”,”xx.do?

    1K10
    领券