AndroluaDocs AndroluaDocs
首页
文章
项目
资源
GitLab (opens new window)
首页
文章
项目
资源
GitLab (opens new window)
  • Lua

    • Lua初见
    • Lua语法学习
    • 数组
    • 函数&回调
      • 什么是回调函数
        • 为什么需要回调
        • 异步回调
  • 开发者素质基础
  • 安卓开发基础

    • 认识安卓开发
    • 认识activity
  • 制作第一个程序
  • 界面设计

    • 布局认知和Aly介绍
    • 布局表及控件认知
    • 自定义控件
    • 列表于相关实现
    • 布局动画相关
  • 数据处理

    • 各种格式的文件及解析方法
    • 正则表达式及lua字符串操作
    • 各种算法实现及数据安全
    • 软件数据存取策略
    • 文件压缩移动等
  • 网络相关

    • 常用网络库的使用
    • Api对接实践
    • Okhttp&Jsoup库使用
  • 系统操作

    • 应用软件间通信
    • 应用与硬件的交互
  • 源码安全

    • 框架原生保护与原理
    • 常用加密原理与实践
  • 文章
  • Lua
可可
2022-04-15
目录

函数&回调

# 什么是回调函数

回调函数(callback)是软件设计的概念,指以参数的形式传递给其它代码的可执行代码。函数是可以当作参数的。

# 为什么需要回调

在程序开发中,往往会遇到耗时的数据请求等操作,在直接调用的情况下,调用线程会被阻塞暂停,在等待执行完毕后才能继续运行,主函数的UI就会呈现 “卡死” 的效果。

一种更好的做法是数据请求函数应该使用异步,UI继续运行(如加载条等等的绘制),请求完毕后函数会通知UI进行更新。类似此种模式被称为异步。

# 异步回调

在aLua中,异步回调函数的一个好例子就是 Http请求,例如:

Http.get(url,cookie,charset,header,callback)

Http.get异步方法提供了相应的callback,在执行中,传入的函数会在异步回调中被执行。callback传入的参数由此库本身定义。

请看下面的执行示例

Http.get('https://zhuanlan.zhihu.com',nil,'utf8',nil,function(code,content)
  --[[
  code-状态码,content-获取到的内容
  ]]
  if 状态码 ==200 then
    print('ok--')
   else
    print('网站访问异常')
  end
end)

在具体执行中,我们知道Http异步函数不会阻塞主线程,而是独立运行。然而我们并不知道这个函数什么时候才能执行完毕,那么就有必要让 Http.get() 这个函数知道获取到数据后该执行什么,例如取消加载动画,装载数据等等。

回调函数就像一张通知单,告诉函数工作完毕要做什么。它既方便了团队间协作,又可以避免因不清楚函数什么时间执行完毕而不知所措。

回调函数的本质就是将相应的函数封装成模块去 “告诉” 其他模块。

Gitlab在线编辑&贡献你的智慧 (opens new window)
上次更新: 2022/08/03, 09:42:19
数组
开发者素质基础

← 数组 开发者素质基础→

Theme by Vdoing | Copyright © 2022-2022 Created by coco | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式