task37 自己实现AJAX

本课代码

  1. https://github.com/FrankFang/nodejs-test-cors/blob/6b7c53c0eccb712213b7ed9640e8ca7d21620166/main.js
  2. https://github.com/FrankFang/nodejs-test-cors/blob/e86d62069b517d35374eecd6b8a3d4b81402d48a/main.js

AJAX 的所有功能

  • 客户端的JS发起请求(浏览器上的)
  • 服务端的JS发送响应(Node.js上的)

1. JS 可以设置任意请求 header 吗

task37 自己实现AJAX_第1张图片
image.png

task37 自己实现AJAX_第2张图片
image.png

task37 自己实现AJAX_第3张图片
image.png

task37 自己实现AJAX_第4张图片
image.png

task37 自己实现AJAX_第5张图片
image.png
  • 第一部分 request.open('get', '/xxx')
  • 第二部分 request.setRequestHeader('content-type','x-www-form-urlencoded'
  • 第四部分 request.send('a=1&b=2')
task37 自己实现AJAX_第6张图片
image.png

2. JS 可以获取任意响应 header 吗?

task37 自己实现AJAX_第7张图片
image.png
  • 第一部分 request.status / request.statusText
  • 第二部分 request.getResponseHeader() / request.getAllResponseHeaders()
  • 第四部分 request.responseText
task37 自己实现AJAX_第8张图片
image.png

image.png

task37 自己实现AJAX_第9张图片
image.png

还记得 window.jQuery 吗

window.jQuery = function(node){
    let nodes = {
        0: node,
        length: 1
    }
    return {
        addClass: function(){

        }
    }
}

今天写 window.jQuery.ajax

window.jQuery.ajax = function(options){
  // 代码
}

task37 自己实现AJAX_第10张图片
image.png

task37 自己实现AJAX_第11张图片
image.png
task37 自己实现AJAX_第12张图片
image.png

task37 自己实现AJAX_第13张图片
image.png

task37 自己实现AJAX_第14张图片
image.png

给参数命名


task37 自己实现AJAX_第15张图片
image.png
task37 自己实现AJAX_第16张图片
image.png

可以传一个参数,也可以传两个参数⬆️

  • ES6语法之解构赋值


    task37 自己实现AJAX_第17张图片
    ES6语法之解构赋值.png

    task37 自己实现AJAX_第18张图片
    image.png
  • 用解构交换a和b的值


    task37 自己实现AJAX_第19张图片
    image.png

回调是啥

call a function
call a function back

callback

回调的问题

问题是每个程序员的回调名不一样


task37 自己实现AJAX_第20张图片
image.png

不看文档的话没法知道这些回调的名称

Promise 解决了这个问题

请背下这个代码

function xxx(){
    return new Promise((f1, f2) => {
        doSomething()
        setTimeout(()=>{
            // 成功就调用 f1,失败就调用 f2
        },3000)
    })
}

xxx().then(success, fail)

// 链式操作
xxx().then(success, fail).then(success, fail)
task37 自己实现AJAX_第21张图片
image.png

task37 自己实现AJAX_第22张图片
image.png
  • Promise是一个函数,传的参数是一个函数,返回了一个哈希,key-value,其中一个key就是then
task37 自己实现AJAX_第23张图片
image.png

你可能感兴趣的:(task37 自己实现AJAX)