精华内容
下载资源
问答
  • 2020-07-20 08:32:37

    一、同步、异步请求
    浏览器发送请求给服务器,其有同步请求和异步请求两种方式。

    1同步请求

    什么叫同步请求呢?

    就是在发送一个请求之后,需要等待服务器响应返回,才能够发送下一个请求。

    之前学的请求是通过浏览器地址栏发送请求,这种方式就是属于同步请求。

    但是其有两个缺陷:

    ①请求必须要等待响应

    如果遇到请求阻塞,网络延迟,用户需要等待,这样用户体验效果不好。

    ②请求时会携带所有的信息

    比如说一个form表单,需要填入用户名,密码,手机号,等多个信息。

    如果其中有一个信息填写错了,请求失败,又要全部重新填写,会很麻烦繁琐。

    我只填写我填错了的不就好了么?

    如何解决这个问题?就需要引入异步的概念了。

    2异步请求

    和同步请求相对,异步不需要等待响应,随时可以发送下一次请求。

    如果是同步请求,需要将信息填写完整,再发送请求,服务器响应填写是否正确,再做修改。

    但是异步请求是局部页面更新。

    比如上述的手机号、密码,邮箱名,在填写时就会发送一个异步请求。

    若是格式不正确,会提醒修改,而其它已经填写的正确信息不受影响。

    二、原生的Ajax
    什么叫Ajax呢?

    说白了就是用来发送异步请求的一种方式。

    先写一个异步请求案例,再逐步学习。

    有一个按钮,给它注册个点击事件,点击就发送异步请求,其具体实现方式共五步:

    ①创建

    是AJAX的基础。

    Ajax就是通过这个对象来发送异步请求的。

    ②onreadystatechange事件

    不要看这一大串这么长,翻译过来就是当前数据源的数据将要发生变化时,就可以理解成监听。

    这个事件就是实现异步请求的核心关键。

    为什么异步请求可以不用等待响应?

    就是因为这儿设置了一个监听事件。

    服务器被监听,一旦readyState为4并且status为200,表明响应成功。

    这些属性都是怎么来的,w3c文档中就有说明:

    readyState和status都对应有不同的数值,只不过4和200表示响应成功。

    ③绑定提交地址

    open()方法,其有三个参数:

    method:即请求方式,例子中是GET请求。
    url:请求路径,"/getAjaxServlet"。
    async:true表示为异步、false表示为同步,不写默认为true。
    ④发送请求

    send()方法,将请求发送到服务器。

    同样的道理,这些方法在w3c文档中也有详细说明。

    ⑤接收响应数据

    也就是在②中判断响应成功时,接受响应的数据,有两种属性:

    responseText :获取字符串形式的数据。
    responseXML:获取XML形式的数据。
    如果不是XML数据,都使用responseText。

    以上就是原生的Ajax,当然实际使用过程中不会这样用,但是面试时可能会被问到。

    并且这是基础,学一下也是有必要的。

    三、JSON
    JSON是一种轻量级的数据交换格式,具有良好的可读性以及便于编写。

    在JSON之前一般都是使用xml来传递数据的,将这两种数据格式做一个对比:

    相比较而言:json数据更加地简洁。

    当然XML也并不是一无是处,其格式统一,就观感而言也有人更喜欢xml这种排版方式。

    并且XML出来了很久了,推广深入人心,通用性高,喜欢XML的人还是挺多的。

    但是对于传输数据来说,数据是否容易被解析?这是非常重要的。

    而json相对于xml而言就具有这样的优势,故在这一块更加地常用。

    Json的基础语法

    一共有三种数据格式,分别说明:

    ①对象类型

    格式为:{name:value,name:value……}

    以键值对的方式存储数据,可以有多个键值对,键值对之间用逗号隔开。

    其中name为字符串类型,而value是任意类型。

    ②数组/集合类型

    格式为:[value,value…]

    其中value是任意类型。

    和数组就很类似,只不过是使用中括号将数据包裹起来的。

    ③混合类型

    即包含对象类型和数组类型。

    值得注意的是:

    JSON数据的key值:字符串类型,必须加双引号。
    JSON数据的value值:任意类型,如果是字符串则必须加双引号。
    时间有限,其中关于json还有一些api就不做专门讲解了,今后使用到了边记边学就好了。

    更多相关内容
  • ajax 同步请求和异步请求的差异分析,需要的朋友可以参考下。
  • 主要介绍了java实现HttpClient异步请求资源的方法,实例分析了java基于http协议实现异步请求的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了SpringBoot中异步请求和异步调用问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Vue-异步请求

    千次阅读 2021-03-15 12:55:34
    什么异步请求(AJAX)? 异步是(Asnychronous Javascript and XML)的简称,表示一个线程在发起一个请求后,在空闲等待的时间里去执行其它的任务,请求完成后通知线程再次进行后续结果的处理。 同步是一个线程必须要...

    什么是异步请求(AJAX)?
    异步是(Asnychronous Javascript and XML)的简称,表示一个线程在发起一个请求后,在空闲等待的时间里去执行其它的任务,请求完成后通知线程再次进行后续结果的处理。
    同步是一个线程必须要等待上一次请求完成后再执行后续的操作。

    异步请求的哪些方式?

    • 原生js方式创建XMLHttpRequest对象
    • jQuery
    • Axios
    • Fetch

    什么是Axios及特点?

    中文官网:http://www.axios-js.com/zh-cn/docs/

    axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES6规范。

    特点:

    • 从浏览器中创建 XMLHttpRequests
    • 从 node.js 创建 http 请求
    • 支持 Promise API
    • 拦截请求和响应
    • 转换请求数据和响应数据
    • 取消请求
    • 自动转换 JSON 数据
    • 客户端支持防御 XSRF

    使用Axios异步框架的开发步骤
    普通vue项目使用script标签引入axios.js

    <script src="js/axios.js"></script>
    

    调用异步方法

    <body>
        <div id="app">
            <button @click="getData()">发送请求</button>
            <p>{{name}}</p>			
        </div>
    </body>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                name:''
            },
            methods:{
                getData(){
                    // 解决axios中的this问题
                    var _this = this;
    
                    // 使用axios发送异步请求
                    axios.get("data/user.json",{
                        // 设置参数
                        params: {
                            id: 12345
                        }
                    })
                    // 接收响应的数据
                        .then(function(resp){
                        _this.name = resp.data.name;
                        console.log(resp.data);
                    })
                    // 异常的处理
                        .catch(function(error){
                        console.log("error:"+error)
                    })
                }
            }
        })
    </script>
    

    axios遇到的问题?
    vue中的this引用问题

    // 解决axios中的this问题
    var _this = this;
    					
    // 使用axios发送异步请求
    axios.get("data/user.json",{
        // 设置参数
        params: {
            id: 12345
        }
    })
    

    前后台分离跨域问题
    在这里插入图片描述
    后台controller层:
    @CrossOrigin: 作用在类上面

    @RestController
    @CrossOrigin
    public class UserController {
    
        @GetMapping("/user/{id}")
        public User getUser(@PathVariable("id")  int id){
            User user = new User();
            user.setUid(1);
            user.setUsername("张三");
            user.setPassword("123");
            user.setCreateTime(DateUtil.toSqlDate(new Date()));
    
            return user;
        }
    }
    

    后台全局方式

    @Configuration
    public class AppConfig {
    
     // 全局跨域配置: 可以在java后台配置,也可以在vue前台配置
        private CorsConfiguration addCorsConfig() {
            CorsConfiguration corsConfiguration = new CorsConfiguration();
            //请求常用的三种配置,*代表允许所有,当时你也可以自定义属性(比如header只能带什么,只能是post方式等等)
            corsConfiguration.addAllowedOrigin("*");
            corsConfiguration.addAllowedHeader("*");
            corsConfiguration.addAllowedMethod("*");
            return corsConfiguration;
        }
    
        @Bean
        public CorsFilter corsFilter() {
            UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
            source.registerCorsConfiguration("/**", addCorsConfig());
            return new CorsFilter(source);
        }
    }
    

    axios请求别名

    axios.request(config)
    axios.get(url[, config])
    axios.delete(url[, config])
    axios.head(url[, config])
    axios.options(url[, config])
    axios.post(url[, data[, config]])
    axios.put(url[, data[, config]])
    axios.patch(url[, data[, config]])
    

    Vue-axios结合
    普通项目中结合
    创建axios的实例

     const $http = axios.create({
            baseURL:'http://localhost'
        })
    

    设置全局属性

     Vue.prototype.$axios = $http;
    

    调用

    this.$axios
        .get(api) // 发送请求
        .then() // 回调函数
        .catch() // 异常回调
    

    Vue-CLI工程中结合
    在项目中安装:

    npm install --save axios vue-axios

    配置axios

    import Vue from ‘vue’
    import axios from ‘axios’
    import VueAxios from ‘vue-axios’
    Vue.use(VueAxios, axios)

    使用axios

     Vue.axios.get(api).then((response) => {
         console.log(response.data)
       })
       
       this.axios.get(api).then((response) => {
         console.log(response.data)
       })
       
       this.$http.get(api).then((response) => {
         console.log(response.data)
       })
    
    展开全文
  • jQuery-ajax-用户名异步请求,转载请注明出处:https://blog.csdn.net/qq_40374604(如有需要欢迎留言,我一定会尽快解答)
  • 在前端页面开发的过程中,经常使用到Ajax...JavaScript实现Ajax异步请求 简单的ajax请求实现 Ajax请求的原理是创建一个XMLHttpRequest对象,使用这个对象来进行异步发送请求,具体实现参考下面代码: function ajax
  • 代码中包含知识点:异步请求HTTP,GET,POST,PUT,DELETE,JSON序列化与反序列化
  • 主要为大家详细介绍了Android最基本的异步网络请求框架,感兴趣的小伙伴们可以参考一下
  • java异步什么意思

    千次阅读 2021-02-13 01:17:22
    本篇文章将对Java异步进行介绍,希望对大家有所帮助。异步异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。也就是说无论异步方法执行代码需要多长时间,跟主线程...

    本篇文章将对Java异步进行介绍,希望对大家有所帮助。

    5532c3e6e2abfa22b847a52aff24075c.png

    异步:异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。

    也就是说无论异步方法执行代码需要多长时间,跟主线程没有任何影响,主线程可以继续向下执行。

    例如:一条有分叉的水管,分叉口就是异步调用入口。

    A口为主线程,B口为辅助线程,当B口有东西塞住,并不影响A口通水。

    33eaf06497b46bb324c73e27d513760a.png

    定义回调接口

    异步代码执行完后,结果往往需要一些做一些处理,

    所以定义一个接口,用来处理异步结果。/**

    * 定义回调接口

    * @author YZQ

    *

    */

    public interface MyCallback {

    /**

    * 定义处理回调方法

    * @param object

    */

    void callback(Object object);

    }

    定义异步实现类/**

    * 异步任务类

    * @author YZQ

    *

    */

    public class AsynTask {

    /**

    * 处理任务

    * @param myCallback 处理完任务后的回调

    */

    public void task(final MyCallback myCallback){

    Thread thread=new Thread(new Runnable() {

    @Override

    public void run() {

    try {

    //线程睡眠3秒,模拟该线程执行时间过长,也就是上面说的【B口有东西塞住】

    Thread.sleep(3000);

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    //完成0到99的累加

    int sum=0;

    for(int i=0;i<100;i++){

    sum+=i;

    }

    //将结果交给接口的实现类取处理

    myCallback.callback(sum);

    }

    });

    //启动线程

    thread.start();

    }

    }

    测试:/**

    * 测试类

    * @author YZQ

    *

    */

    public class Test {

    public static void main(String[] args) {

    //调用异步任务

    new AsynTask().task(new MyCallback() {

    //实现回调方法

    @Override

    public void callback(Object object) {

    System.out.println("异步回调处理:值 "+object);

    }

    });

    System.out.println("主线程等待异步输出");

    try {

    Thread.sleep(5000);

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }

    3c28c7045fd635abfef5168778c95fa9.png

    可以看出:

    主线程先输出了【主线程等待异步输出】,

    随后辅助线程输出【异步回调处理:值 4950】。

    展开全文
  • Flutter通过FutureBuilder实现异步请求网络数据并显示加载中Demo,详情请看博客Flutter中的异步(Future、async、await、FutureBuilder)和 网络请求:https://yuzhiqiang.blog.csdn.net/article/details/89155870
  • gohttp:支持异步请求的Go的HTTP客户端
  • HttpClient异步请求

    2016-07-11 15:09:48
    HttpClient,发送异步请求,get、post请求
  • 使用qt写的请求http服务类,实现了get同步请求、get异步请求、post同步请求、post异步请求。4个方法,方便实用。
  • 这个小程序只是简单的使用线程池实现了libcurl的异步请求功能,很多地方还需要优化,之所有厚颜上传到这里,主要有有三个目的。 一个是回报这些天在CSDN上得到的帮助,希望可以帮助到后来的人; 二是感于libcurl编译...
  • servlet异步请求

    万次阅读 2020-12-12 13:02:56
    1、什么是servlet异步请求 Servlet 3.0 之前,一个普通 Servlet 的主要工作流程大致如下: (1)、Servlet 接收到请求之后,可能需要对请求携带的数据进行一些预处理; (2)、调用业务接口的某些方法,以完成...

    1、什么是servlet异步请求

    Servlet 3.0 之前,一个普通 Servlet 的主要工作流程大致如下:

    (1)、Servlet 接收到请求之后,可能需要对请求携带的数据进行一些预处理;

    (2)、调用业务接口的某些方法,以完成业务处理;

    (3)、根据处理的结果提交响应,Servlet 线程结束。

    其中第二步处理业务逻辑时候很可以碰到比较耗时的任务,此时servlet主线程会阻塞等待完成业务处理,对于并发比较大的请求可能会产生性能瓶颈,则servlet3.0之后再此处做了调整,引入了异步的概念。

    (1)、Servlet 接收到请求之后,可能需要对请求携带的数据进行一些预处理;

        (2)、调用业务接口的某些方法过程中request.startAsync()请求,获取一个AsyncContext

        (3)、紧接着servlet线程退出(回收到线程池),但是响应response对象仍旧保持打开状态,新增线程会使用AsyncContext处理并响应结果。

         (4)、AsyncContext处理完成触发某些监听通知结果

    2、Servlet异步请求示例

           2.1、示例准备

             本示例采用web.xml配置的形式,模拟场景为:笔者所在的it公司每周的工作内容,首先研发总监分配给产品、研发、测试相关的任务,布置完任务就出差(模拟请求响应),余下的各个小组进行自己任务操作(模拟的耗时操作),最终出周报完成任务(异步任务处理完成的通知)

       git地址:https://github.com/liushangzaibeijing/spsm.git  分支:dev_async

           2.2、实现自定义的Servlet

    /**
     * @ClassName AsyncServlet
     * @Desc 自定义异步Servlet处理器
     * @Author xieqx
     * @Date 2020/12/9 15:38
     **/
    //通过注解的形式开始异步
    @WebServlet(urlPatterns = "*.async",asyncSupported = true)
    public class AsyncServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           doPost(req,resp);
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //开启异步支持
            //异步管理上下文
            resp.setCharacterEncoding("GBK");
            PrintWriter writer = resp.getWriter();
            writer.println("周工作任务布置开始");
            AsyncContext asyncContext = req.startAsync();
            asyncContext.start(new WeekTask(asyncContext));
            //添加监听器 处理完成监听
            asyncContext.addListener(new AsyncListener() {
                @Override
                public void onComplete(AsyncEvent asyncEvent) throws IOException {
                    System.out.println("工作在"+new Date()+"处理完成");
                }
                @Override
                public void onTimeout(AsyncEvent asyncEvent) throws IOException {
                    System.out.println("工作在"+new Date()+"处理超时");
                }
                @Override
                public void onError(AsyncEvent asyncEvent) throws IOException {
                    System.out.println("工作在"+new Date()+"处理出错");
                }
                @Override
                public void onStartAsync(AsyncEvent asyncEvent) throws IOException {
                    System.out.println("工作在"+new Date()+"处理开始");
                }
            });
            writer.println("周工作任务布置完成");
            writer.flush();
        }
    }

      开启异步支持(默认异步支持不开启)有两种方式:

    •    使用注解

    • web.xml配置

    
    	<servlet>
    		<servlet-name>asyncServlet</servlet-name>
    		<servlet-class>com.xiu.async.servlet.AsyncServlet</servlet-class>
    		<!-- 开启servlet的异步请求操作 -->
    		<async-supported>true</async-supported>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>asyncServlet</servlet-name>
    		<url-pattern>*.async</url-pattern>
    	</servlet-mapping>

    上述代码中通过request.startAsync()启动异步处理 返回一个异步上下文对象AsyncContext最终是使用该上下文对象来进行异步业务逻辑处理,其中有两个核心方法 

    asyncContext.start(new WeekTask(asyncContext));  添加一个异步任务该任务是一个Runnable线程接口,这里就清晰了其实是servlet线程将处理任务交给另一个子线程,servlet直接返回从而达到提高系统吞吐量的作用。
    

    对于异步请求可以我们需要获取其中的结果,所有这里提供了监听器模式添加事件监听AsyncListener

    onComplete
    异步请求处理完成触发 前提示需要调用 asyncContext.complete()方法(因为程序也不知道什么时候任务算是调用完毕了)
    onTimeout
    异步请求处理超时触发,一般来说采用异步请求的任务都是比较耗时的任务,所以需要修改servlet默认的超时时间(修改的长一点) 
    onError
    异步处理错误的时候触发
    onStartAsync
    异步处理开始的时候触发即为request.startAsync(),因为添加监听器在startAsync()方法后,所以第一个启动是无法触发该监听的

    这里异步处理只是简单的打印了相关日志,不过真实的业务场景中可以写复杂的业务处理逻辑。

    3.3、异步任务

       这里提供相关的异步操作是实现runnable的线程实现类,同时这里提供了相关Job,PmJob(产品任务),RDJob(研发任务),TestJob(测试任务),每个任务模拟了10秒的耗时任务。

    **
     * @ClassName WeekTask
     * @Desc 每周任务 
     * @Author xieqx
     * @Date 2020/12/10 9:36
     **/
    public class WeekTask implements Runnable {
    
        private List<Job> jobs = null;
    
        private AsyncContext asyncContext = null;
        //这里初始化产品任务PmJob、研发任务RDJob  测试任务TestJob
        public WeekTask(AsyncContext asyncContext) {
           this.asyncContext = asyncContext;
           jobs = new ArrayList<>();
           PmJob pmJob = new PmJob();
           RDJob rdJob = new RDJob();
           TestJob testJob = new TestJob();
           jobs.add(pmJob);
           jobs.add(rdJob);
           jobs.add(testJob);
        }
    
        @Override
        public void run() {
            for(Job job:jobs){
                job.execute();
            }
            System.out.println("周任务工作完成");
            //job执行完成后通知
          asyncContext.complete();
        }
    }

      PmJob

    /**
     * @ClassName PmTask
     * @Desc 产品经理任务
     * @Author xieqx
     * @Date 2020/12/9 16:03
     **/
    public class PmJob implements Job {
        @Override
        public void execute() {
            System.out.println("产品经理开评审会议");
            try {
                Thread.sleep(10);
                System.out.println("模拟需求评审会议...");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    RDJob

    /**
     * @ClassName PmTask
     * @Desc 研发任务
     * @Author xieqx
     * @Date 2020/12/9 16:03
     **/
    public class RDJob implements Job {
        @Override
        public void execute() {
            System.out.println("程序猿开始开发");
            try {
                Thread.sleep(10);
                System.out.println("程序猿哼哧哼哧干活中...");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    

    TestJob

    /**
     * @ClassName TestJob
     * @Desc 测试任务
     * @Author xieqx
     * @Date 2020/12/9 16:03
     **/
    public class TestJob implements Job {
        @Override
        public void execute()  {
            System.out.println("测试开始测试");
            try {
                Thread.sleep(10);
                System.out.println("测试用例测试...");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    3.4、测试场景

       请求立马响应,但是异步任务在后面处理

      

    展开全文
  • javaHttp异步请求

    2014-04-11 15:47:15
    AsyncClientHttpExchangeStreaming类是基于HttpAsyncClients的异步请求代码
  • Vue 异步请求

    千次阅读 2022-03-13 20:52:56
    Vue 异步请求 Vue 中使用 axios 进行网络请求,使用起来和 jQuery 中的 $.get 和 $.post 功能类似。 安装依赖:cnpm install --save axios 1. get 请求方式 给定服务器控制器代码,可以接收 name 和 age 参数,设置...
  • http异步请求方式

    千次阅读 2019-12-15 11:26:59
    此时我们可以将http同步请求改进为http异步请求,如下图所示: 该如何实现? 下面的任务就是该如何实现http的异步请求,这里有如下几个步骤: 1、将send与recv分离在两个线程,那么send就不...
  • android异步http请求

    2014-01-25 15:53:36
    实现android的异步http请求,可以使用post和get方式
  • js循环中异步请求

    千次阅读 2021-06-08 15:13:07
    需求:在处理图表组件的相关功能时,遇到一个特殊场景:需在循环内部进行异步请求,待所有请求结束后,再进行后续操作。经尝试找到以下两种处理方案。 方案1:使用变量进行记录 使用do while循环,在方法体中...
  • 同步请求和异步请求的区别(个人理解)
  • Ajax异步请求的理解和使用1. Ajax 异步请求 说明2. Ajax 实现对象:XMLHttpRequest2.1 xhr 建立 Ajax 流程2.2 xhr 属性、句柄、方法3. Ajax 异步 GET/POST 请求3.1 Ajax GET 请求3.2 Ajax POST 请求 1. Ajax 异步...
  • SpringBoot异步请求

    千次阅读 2020-01-28 00:34:54
    何为异步请求 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所...
  • 前端可用的异步请求方案

    千次阅读 2022-04-25 09:30:51
    前端可用的异步请求方案
  • axios实现异步请求

    千次阅读 2021-10-21 21:16:41
    Vuejs 并没有直接处理ajax的组件,但可以使用axios或vue-resource组件实现对异步请求的操作。 使用axios或vue-resource组件实现对异步请求的操作。 vue-resource vue-resource是Vue.js的插件提供了使用...
  • 详细介绍了Java Web 的Servlet3.0 中提供的异步请求处理机制的原理,并提供了使用案例!
  • android http 多请求异步封装

    热门讨论 2014-04-10 19:38:19
    本demo主要对异步请求封装 可用作基本项目框架来使用 网络请求等等小细节已经ok 如有需要请进一步更改 1)封装HttpClient 2)由于用到线程池,可以进行多任务网络请求操作 3)没有网络的时候进行网络状态检查 4)对...
  • [springboot] 异步开发之异步请求

    千次阅读 2019-01-08 18:15:19
    何为异步请求 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所...
  • Postman异步请求

    千次阅读 2020-12-30 17:47:15
    Postman异步请求 1、使用该pm.sendRequest方法从“预请求”或“测试”脚本异步发送请求。如果您要执行计算或同时发送多个请求,而不必等待每个请求完成,则可以在后台执行逻辑 GET或者POST请求: const post...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 665,602
精华内容 266,240
关键字:

异步请求什么意思