JavaScript的Ajax请求默认是异步的,有以下两种方式能让Ajax请求变成同步

方式一

使用ES7的Async和Await

async function main(){const env = await queryEnv('141001')console.log(env)
}async function queryEnv (platform) {const result = await axios({url: '/chronic/userPlatformConfig/getBaseInfo',params: { platform: platform },method: 'post',headers: {'Content-Type': 'application/x-www-form-urlencoded'}})return result
}main()

方式二

使用原生的XmlHttpRequest发送同步请求,xhr.open的第三个参数为false表示同步请求

function main () {const env = queryEnv('141001')console.log(env)
}function queryEnv (platform) {const xhr = new XMLHttpRequest()const url = '/chronic/userPlatformConfig/getBaseInfo'xhr.open('post', url, false) // 同步请求xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')xhr.send('platform=' + platform)const res = JSON.parse(xhr.responseText)return res.body
}main()

比较

方式一使用ES7的语法Async/Await将本来是异步的Ajax请求转换成同步的请求,方式二本身就是同步请求。

方式一不好的地方是若queryEnv这个函数被嵌套多层调用,每个调用的地方都要加上Async/Await,被多层嵌套时,代码阅读和debug都有不方便。
好处是queryEnv这个函数可以随时在同步异步间进行转换,上述示例是同步函数,若要转换成异步,使用then即可。

function main(){queryEnv('141001').then(env => {console.log(env)})
}

方式二的好处是调用放的代码逻辑写起来很顺畅,方便阅读,不怕多层嵌套;但不能像方式一那样同步异步转换,若要转换需要再加个函数或者是增加是否异步这个参数。

JavaScript实现同步Ajax请求的两种方式相关推荐

  1. javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点...

    主要是javascript中消除字符串空格,比较两种方式的不同 //面向对象,消除字符串两边空格 String.prototype.trim = function() { return this.re ...

  2. 探讨Netty获取并检查Websocket握手请求的两种方式

    在使用Netty开发Websocket服务时,通常需要解析来自客户端请求的URL.Headers等等相关内容,并做相关检查或处理.本文将讨论两种实现方法. 方法一:基于HandshakeComplet ...

  3. JSP同步请求和html+ajax异步请求的两种方式

    war包:包括所有的项目资源,只要从浏览器发起的都是属于请求,然后把资源响应给浏览器,解析显示出来. 方式一:HTML+ajax(跳转静态html也是属于请求响应,把整个页面响应给浏览器.) html ...

  4. jquary发送ajax请求的三种方式

    ajax= Asynchronous JavaScript and XM (异步JavaScript和XML),通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新,可以在不重新加载整 ...

  5. 原生AJAX以及JQuery发送AJAX请求的几种方式

    JSON&AJAX 文章目录 JSON&AJAX 1. JSON 1.1 json概述 1.2 Json使用 3. 原生AJAX 4. JQuery的AJAX 4.1 GET请求方式 ...

  6. Vue3(撩课学院)笔记09-axios简介,发起get请求的两种方式,发起带参的get及post请求,发起并发请求,并发请求结果将数组展开,axios全局配置,axios配置及封装,请求和响应拦截

    1.axios简介 axios是基于promise可以用于浏览器和node.js的网络请求库,在服务器端使用原生node.js,在浏览气短使用ajax(即XMLHttpRequests) 2.axio ...

  7. java发送http get请求的两种方式

    长话短说,废话不说 一.第一种方式,通过HttpClient方式,代码如下: public static String httpGet(String url, String charset)throw ...

  8. ajax上传图片的两种方式

    原文地址:https://www.cnblogs.com/ailingfei/p/6744759.html 第一种formData var formData = new FormData($( &qu ...

  9. .Net Core下发送WebRequest请求的两种方式

    1.使用RestSharp.NetCore 2.使用WebApi请求方式 转载于:https://www.cnblogs.com/mailaidedt/p/6525501.html

最新文章

  1. 文件压缩和文件打包命令
  2. 30. SQL -- 完整性及约束(1)
  3. JVM基础系列第14讲:JVM参数之GC日志配置
  4. year range in CRM Fiori Sales Pipeline
  5. java优秀算法河内之塔_河内塔的Java程序
  6. spark学习-Spark的Map()和FlatMap()函数使用
  7. 经纬度距离计算小工具_一个NB工具大合集打网站,总有一款是你需要的
  8. ANSYS网格划分标准及方法
  9. sklearn 手写体识别
  10. ELDER-RAY (多头力度和空头力度)
  11. LYOI 78 小澳的葫芦
  12. 星辰大海,不属于任何人,也属于任何人
  13. MySQL数据库从入门到入土!
  14. PADS9.5软件安装教程|兼容WIN10
  15. 局域网远程连接另一台电脑
  16. 使用Django创建bolg的后台页面 (精简版)NO.2
  17. 发表一篇顶会论文的经验分享
  18. 五轴机械臂实现视觉抓取--realsense深度相机和五自由度机械臂
  19. 智能热流体仿真软件AICFD 2023R1新版本功能介绍
  20. android 虚拟手柄

热门文章

  1. r5 4600u和i5 1135g7哪个更强 r5 4600u和i5 1135g7对比评测
  2. Python爬虫实现实时翻译
  3. 华为交换机Vlan间访问控制ACL配置
  4. ExoPlanets 一款基于以太坊区块链的太空探索加密游戏
  5. springboot整合spring Validated
  6. 毕业设计 单片机循迹机器人小车
  7. 财经365视界|春运抢票,谁还相信加速包?
  8. msm8916 MDP(mobile display processor) 简介
  9. ssm(springmvc4+spring4+mybatis3)整合实战-个人博客系统-整合各大框架
  10. 物联卡如何代理 物联卡代理商有哪些?