Luke's home Luke's home
首页
  • 前端文章

    • JavaScript
页面
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Luke xiao

K
首页
  • 前端文章

    • JavaScript
页面
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • javascript

    • 基础知识
    • 进阶知识

      • 类型转换
      • 正则表达式
      • 错误
      • 调试
      • 严格模式(use strict)
      • this关键字
      • JavaScript let 和 const
      • json
      • javascriptvoid(0)
      • 异步编程
        • 回调函数
        • 异步 AJAX
      • promise
    • 函数

    • JS HTML DOM

    • JS 高级教程

    • 浏览器BOM

    • HTML5新特性

    • CSS3新特性

  • 布局

  • less

  • js库

  • 前端
  • javascript
  • 进阶知识
lukexiao
2021-04-30

异步编程

# 回调函数

回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。

    ​

    <p>回调函数等待 3 秒后执行。</p>
    <p id="demo"></p>
    
    1
    2
    function print() {
        document.getElementById("demo").innerHTML="RUNOOB!";
    }
    setTimeout(print, 3000);
    
    1
    2
    3
    4
    // Make sure to add code blocks to your code group

    这样,网页加载完毕后,会延迟3秒钟执行print

    当然,JavaScript 语法十分友好,我们不必单独定义一个函数 print ,我们常常将上面的程序写成:

    setTimeout(function () {
        document.getElementById("demo").innerHTML="RUNOOB!";
    }, 3000);
    
    
    1
    2
    3
    4

    # 异步 AJAX

    XMLHttpRequest 常常用于请求来自远程服务器上的 XML 或 JSON 数据。一个标准的 XMLHttpRequest 对象往往包含多个回调:

    var xhr = new XMLHttpRequest();
     
    xhr.onload = function () {
        // 输出接收到的文字数据
        document.getElementById("demo").innerHTML=xhr.responseText;
    }
     
    xhr.onerror = function () {
        document.getElementById("demo").innerHTML="请求出错";
    }
     
    // 发送异步 GET 请求
    xhr.open("GET", "https://www.runoob.com/try/ajax/ajax_info.txt", true);
    xhr.send();
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    XMLHttpRequest 的 onload 和 onerror 属性都是函数,分别在它请求成功和请求失败时被调用。

    编辑 (opens new window)
    上次更新: 2021/08/13, 23:21:49
    javascriptvoid(0)
    promise

    ← javascriptvoid(0) promise→

    最近更新
    01
    流式布局
    08-13
    02
    flex布局
    08-13
    03
    rem布局
    08-13
    更多文章>
    Theme by Vdoing | Copyright © 2021-2021 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式