91、ajax的优点
 
 
a、提高运行效率
 
b、提高用户体验,让多件事情同时发生
 
c、在不刷新页面的情况下可以对局部数据进行加载和刷新
 
 
 
92、ajax请求的流程
 
1、创建通信对象
 
     a、IE7及其以上版本中支持原生的 XHR 对象,因此可以直接使用
          var xhr = new XMLHttpRequest()
 
     b、IE6及其之前版本中,XHR对象是通过MSXML库中的一个ActiveX对象实现的
          var xhr = new ActiveXObject("Microsoft,XMLHTTP");
 
2、链接和发送
 
     a、open() 函数参数有三个:请求方式,请求地址,是否异步请求(同步请求的情况特别少)
          xhr.open('get','http://www.baidu.com',true)
 
     b、GET 请求方式是通过URL参数将数据提交到服务器的,POST则是通过将数据作为 send的参数传递
 
     c、xhr.send() 发送请求
 
3、监听服务器是否返回数据
 
     a、使用onreadystatechange事件监听服务器返回状态
 
          xhr.onreadystatechange = function(){
 
          }
 
93、http的状态有哪些(常用的)?(xml.status)
 
100——客户必须继续发出请求
 
101——客户要求服务器根据请求转换HTTP协议版本
 
200——交易成功
 
304——客户端已经执行了GET,但文件未变化
 
404——没有发现文件、查询或URl
 
500——服务器产生内部错误
 
505——服务器不支持或拒绝支请求头中指定的HTTP版本
 
94、ajax的状态值有哪些?(xml.readyState)
 
         0-未初始化,尚未调用open()方法
          
          1-启动,调用open()方法,已调用send()的方法,正在发送请求
     
          2-发送,已经调用send()方法,已接受到响应
 
          3-解析   正在解析响应数据
 
          4、完成,响应数据解析完成,客户端可以调用;(我们都是使用xhr.readyState == 4 判断ajax请求是否结束)
 
 
95、什么是同源策略?
 
同源指的是域名、协议、端口号相同
 
同源策略规定了js代码的访问权限,只能访问和自己同源的页面。
 
同源策略是一种约定,它是浏览器最核心也最基本的安全功能
 
96?什么是跨域?如何解决跨域? jsonp的原理?
 
1、由于浏览器的同源策略,即属于不同域的页面之间不能相互访问各自的页面内容。
 
2、CORS和jsonp
 
3、利用浏览器的"漏洞" src不受同源策略的影响,可以请求任何链接 。动态创建script标签,将事先写好的函数名传给服务器,供服务器使用
 
97、什么是jsonp?
 
 jsonp是一种非正式传输协议,用于解决跨域问题
 
98、jsonp跨域的流程
 
     1、创建一个全局函数
 
     2、创建一个script标签 
 
     3、给script添加src
 
     4、给src添加回调函数test(callback=test) callback是传给后端的一个参数
 
     5、将script放到页面上
 
     6、script请求完成,将自己从页面上删除
 
99、简术你对promise的理解
 
1、什么是promise?
    异步操作的同步代码
 
2、promise的基本使用
    
    通过new promise创建一个promise对象,里面有一个参数,参数是一个回调函数,回调函数中有2个参数,resolve,reject  resolve()当异步执行成功的时候调用的方法,reject()当异步失败的时候调用的方法。
 
    除此之外promise有一个then方法,当成功的时候执行第一个回调函数,当失败的时候执行第二个回调函数。第二个回调函数也可以通过promise对象.catch调用
 
 
3、Promise.all():当所有的异步代码都执行完毕以后才会执行.then中的操作
 
4、Promise.race():只要有一个promise执行完毕后就会执行.then操作
    
 
100、如何实现多个异步同步执行
 
var p1 = new Promise(function(resolve,reject){
        setTimeout(function(){
            console.log('1');
            resolve()
        },3000)
    })
 
    function p2(){
        return new Promise(function(resolve,reject){
            setTimeout(function(){
                console.log("2");
                resolve();
            },2000)
        })
    }
 
 
    function p3(){
        return new Promise(function(resolve,reject){
            setTimeout(function(){
                console.log("3");
                resolve();
            },1000)
        })
    }
 
    function p4(){
        return new Promise(function(resolve,reject){
            setTimeout(function(){
                console.log("4");
                resolve();
            },500)
        })
    }
 
    p1.then(function(){
        return p2()
    })
    .then(function(){
        return p3();
    })
    .then(function(){
        return p4();
    })

原生js大总结十的更多相关文章

  1. 原生js大总结九

    81.ES6的Symbol的作用是什么?   ES6引入了一种新的原始数据类型Symbol,表示独一无二的值   82.ES6中字符串和数组新增了那些方法   字符串       1.字符串模板    ...

  2. 原生js大总结二

    011.if语句的优化   1.把次数多的条件和执行结果放到最前面   2.减少第一次无用的判断,可以用嵌套判断   3.判断语句禁止出现三次嵌套     012.谈谈你对switch的理解   1. ...

  3. 原生js大总结十一

    101.请简述prototype.__proto__ constructor三者的关系   1.prototype:     每一个函数都有一个prototype这个属性,而这个属性指向一个对象,这个 ...

  4. 原生js大总结八

    071.如何组织事件冒泡   利用事件对象属性:stopPropagation 和 cancelBubble   stopPropagetion是一个方法:e.stopPropagetion();   ...

  5. 原生js大总结七

    061.如何获取父级节点.上一个子级节点.下一个子级节点    nextElementSibling  后一个兄弟元素  (如果没有是null)    previousElementSibling   ...

  6. 原生js大总结四

    031.数组常用的一些方法   1.push: 在数组最后添加一个或者多个元素,返回添加后数组的长度   2.pop: 从数组最后取出一个元素,返回的是数组的最后一个元素(取出的元素)   3.uns ...

  7. 原生js大总结五

    041.在js中如何用方法将10进制的字符转换成16进制和8进制   数字.toString(16) 数字.toString(8)     042.如何创建时间对象   new Date()   04 ...

  8. 原生js大总结三

    021.定义函数的几种方式   1.关键字函数:function fnName(){};   2.字面量函数:var fn = function(){};   3.构造函数:var fn = new ...

  9. 原生js大总结一

    001.浅谈堆和栈的理解?   js变量存储有栈存储和堆存储,基本数据类型的变量存储在栈中,引用数据类型的变量存储在堆中 引用类型数据的地址也存在栈中   当访问基础类型变量时,直接从栈中取值.当访问 ...

随机推荐

  1. 关于IDEA无法完整显示项目文件结构

    今天发现一个奇怪的问题,就是我从本地导入了文件,明明已经成功了,但是在我的项目结构里面就是不显示,然而点击目录, 又能打开相应的文件,如图所示: 其实这个打开的只是包文件,只需要如下图操作即可:

  2. rpm2cpio---如何不安装但是获取rpm包中的文件

    如何不安装但是获取rpm包中的文件 使用工具rpm2cpio和cpio rpm2cpio xxx.rpm | cpio -idmv 参数i表示提取文件.v表示指示执行进程,d和make-directo ...

  3. IDEA集成Python插件,SDK配置

    (第一次写在博客园添加随笔, 会有些生硬,有不对的地方和描述错误之处希望可以指出) 最近在学习一个新的知识点,涉及到Python的使用,因为第一次接触很多地方都不是很明白 ,好,废话不多说,现在直接上 ...

  4. Object-C初体验

    前几周,看了书,标记了要Coding的例子.(书是写博客,CSDN送的,也可以用C币买) 周末,来搞几个例子. 2015年春,刚刚买Mac的时候,就搞了1个Object-C的HelloWorld,毕竟 ...

  5. Vert.x,一个异步、可伸缩、并发应用框架引发的思考

    2012年听说过Vert.x这个框架之后,去年大致了解了下,最近开始进一步熟悉这个框架. Vert.x是一个用于下一代异步.可伸缩.并发应用的框架,旨在为JVM提供一个Node.js的替代方案.开发者 ...

  6. OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类

    在研究OpenJDK源码过程中,我发现常用的设计方法就是2种:接口,接口-抽象类-具体实现类 . 在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类. 1.只有接口,没有实现类. ...

  7. AJAX 删除数据

    var json = { "id":"12", "name":"admin"}$.ajax({ type: " ...

  8. [Codeforces558E]A Simple Task 线段树

    链接 题意:给定一个长度不超过 \(10^5\) 的字符串(小写英文字母),和不超过5000个操作. 每个操作 L R K 表示给区间[L,R]的字符串排序,K=1为升序,K=0为降序. 最后输出最终 ...

  9. jquery插件库http://www.jq22.com/

    http://www.jq22.com/ http://www.jq22.com/jquery/%E5%8A%A0%E8%BD%BD http://www.jq22.com/jquery/%E5%BC ...

  10. 如何使iframe外部的超级链接的页面在iframe中打开

    如何使iframe外部的超级链接的页面在iframe中打开,有以下两种方法: 一.html方法: <iframe name="a1"></iframe> & ...