ReferenceError: XMLHttpRequest is not defined(解决)

ReferenceError: XMLHttpRequest is not defined
在JS 脚本中,运行 var xhttp = new XMLHttpRequest;报错,提示:ReferenceError: XMLHttpRequest is not defined;
原因:xmlhttprequest 不是Node 内置的,需要单独安装:

安装命令:npm install xmlhttprequest

var xhr=new XMLHttpRequest()
改成

var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
 
var xhr = new XMLHttpRequest();

我就是想在本地浏览器上使用异步操作,先补补异步操作:
同步和异步通常用来形容一次方法调用。
同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。
异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作(因为用本地浏览器执行代码更直观,就不用node调试了)。而异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。
异步操作可以用时间处理函数、Promise

    const p = new Promise((resolve,reject)=>{
    
    
      // 异步操作
      setTimeout(()=>{
    
    
        console.log('用户数据')
        resolve('用户数据')
      }3000)
      
    })
    
    //!!! 调用then 方法,then方法的返回结果必须是 Promise 对象,对象状态由回调函数的返回结果决定
    // 1.如果回调函数中返回的结果是 非promise 类型的数据,状态为成功,then方法返回的Promise对象的状态为成功,值为该非Promise的数据
    //    其实函数若无返回值,默认返回了undifinded(这表示:我们可以通过Promise.resolve()将一个字符串、数字或者对象等转换成一个成功
    //    状态的Promise对象。)
    //  
    // 2.若回调函数中返回的结果是 promise对象,then方法返回的Promise对象的状态与该promise对象的状态一致,且值与该promise对象的回调函数
    //    的参数一致。
    p.then(function(value){
    
    
      console.log(value + '1' )
      return value
    },function(reason){
    
    
      console.warn(reason)
    })
    console.log('@', p)

使用本地浏览器执行后的结果如下:

@ Promise {
    
    <pending>}
 用户数据
 用户数据1

我们看到p先被打印出来,证明promise本身就是异步的,而且p本身也是一个pending状态的promise对象。(接下来看两个例子削了它)

const p = new Promise((resolve,reject)=>{
    
    
      // 异步操作
      setTimeout(()=>{
    
    
        console.log('用户数据')
        resolve('用户数据')
      },3000)
      
    })
    
    p.then(function(value){
    
    
      console.log(value + '1' )
      return value
    },function(reason){
    
    
      console.warn(reason)
    })
    console.log('@', p)

执行结果:这是后面两个数据还没刷出来时我点开了Promise****
执行结果:这是后面两个数据刷出来后我点开了Promise
在这里插入图片描述
欧了

猜你喜欢

转载自blog.csdn.net/qq_52317104/article/details/120459500