js 如何判断是异步请求还是普通请求

JavaScript018

js 如何判断是异步请求还是普通请求,第1张

这是根据请求时的参数来决定的啊,如果async为true就是异步请求,为false就是同步请求。也就是说,是否异步请求是由前端决定的,后台程序是不作区分一视同仁处理的。前端如果是以同步方式发出请求,它就会阻塞程序,等待后台返回数据再继续运行;而异步方式的话,就会立刻返回,继续执行其他代码,当后台返回数据时再以回调函数的形式进行处理。既然同步异步是由前端决定的,那么前端的js自然就知道如何来处理这个请求结果啦。

用jquery$.ajax({

url:url,

data:para,

dataType: 'json',

async:false,//(默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

success: function(data){}})

这个问题也是困扰我一个上午,查了很多方法想让vue支持同步请求,但都失败了。于是我打算使用原生js的请求方法,来让页面实现同步请求的功能。毕竟原生的js 在哪个框架下都是可以使用的。附上代码:// js发送同步请求

let userId = this.user.userId

      let sectionId = this.currentSection

      let request = new XMLHttpRequest()

      request.open('POST', `/${prefixApi}learning-progress?userId=${userId}&sectionId=${sectionId}`, false) // 第三个参数 false 代表设置同步请求

      request.setRequestHeader('Accept', 'application/json')

      request.setRequestHeader('Content-Type', 'application/json')

      request.send(JSON.stringify({learningCompleted: this.learningCompleted, playbackTime: this.currentTime}))

      if (request.status === 200) {

        console.log('success')

      } else {

        this.NETWORK_MODAL.show = true

      }