2018-01-29 自己实现一个AJAX

JS可以设置任意请求header吗?
可以:用setRequestHeader
放在.open和.send之间


image.png

image.png

请求头显示出来了

那第4部分能不能设置?(要用POST请求)
搜 js set request body
.send()


image.png

image.png

getAllResponseHeaders()
getResponseHeader


image.png

所有的响应的头——字符串

request.statusText就是获取OK啊什么的

requset.responseText

image.png

AJAX的请求和响应

服务端需要端口号


image.png

jquery.ajax

window.jQuery.ajax的内存图


image.png

写jquery.ajax的目的是把4行代码变成一行


image.png
image.png

问题:时间长了,无法确定下面的参数是什么意思


image.png

问题:当使用GET方法,第三个参数其实不需要的,那怎么办?只能写undefined或者null,代码看起来丑
比如某个API xxx(null,null,null,null,1)完全不知道每个参数的意思

办法:用有结构的参数

箭头函数是没有arguments的

image.png

使用方用到了successFn,而里面的参数x是被调用方的第一个参数request.responseText,即x <-request.responseText,这就叫做callback

如果请求失败了,有没有可能依然存在第4部分?
答案:是的

模拟下:


image.png
image.png

image.png
image.png

image.png

一个函数如何接受两种形式的参数?


image.png
image.png
image.png

image.png

ES5和ES6

如果成功了,会打印出responsText和成功


image.png

'成功'是作为第二个then的参数传进去的
第一个then里的return的值会传递给下一个then的输入参数
问题:为什么成功之后打印出来的结果是个对象?(responsText)


image.png

因为jQuery发现你的返回值的content-type是text/json,json这4个字母,会自动把字符串转换成对象

image.png

代码变更

window的promise是怎么的?


image.png

要用promise,需要new一个,需要传入一个函数


image.png

promise返回的对象带有then属性,所以可以调用then
then也返回一个promise对象,所以可以继续then
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 8,734评论 1 56
  • 大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网前端工程师...
    大大头大阅读 7,867评论 1 72
  • 五十三:请解释 JavaScript 中 this 是如何工作的。1.方法调用模式当一个函数被保存为一个对象的属性...
    Arno_z阅读 604评论 0 2
  • 你不知道JS:异步 第三章:Promises 在第二章,我们指出了采用回调来表达异步和管理并发时的两种主要不足:缺...
    purple_force阅读 2,126评论 0 4
  • 我到底睡了多久?一个片刻、一小时或者永恒?我不知道。而我是被一股无情拉扯我衣袖之力量所弄醒的。我睡眼惺松的坐起来,...
    最后的辰星阅读 425评论 0 0