抽空详细学习一下什么是回调函数(一个回调函数,也被称为高阶函数)

1.什么样的函数是回调函数

  • 自己定义的(sittimeout不是自己定义的)
  • 没有调用
  • 自己执行

1.同步回调与异步回调函数

同步回调函数

const arr = [1, 2, 3]
arr.forEach(item => {
console.log(item)
}) //同步回调,任务启动后(等待完成),直接执行回调函数,再往下执行 console.log("later")

异步回调函数

setTimeout(() => {
console.log('callback()')
},0) // 任务启动后,代码往下执行,任务放入队列,下面代码执行完,再执行队列任务
console.log("later")

如何判断一个回调函数是不是异步

在回调函数后面写一个打印输出。如果在任务完成后打印,就是同步

2.JS中 error处理

1.错误的类型

  • Error:所有错误的父类型
  • ReferenceError 引用变量不存在   // a = ''' b
  • TypeError 数据类型不正确           // b = []  b.XXX
  • RangeError 数值不在允许的范围内  //递归
  • SyntaxError 语法错误                  // var a =""""

出了错误不处理 程序不会向下执行(错误被捕获后就程序就会向下执行)

2.错误的处理

捕获错误 try catch(原生程序抛出错误)

  try {
let d
console.log(d.xxx)
} catch (error) {
console.log(error)
} // error对象中有两个属性 massege和stack

抛出错误:throw error  + 捕获  //可以自己抛出不明错误 让外部处理

  function proxy() {
if (Date.now()%2 === 1) {
console.log("ok")
} else {
throw new Error('这是错误信息提示文本error.massage') //内部抛出错误用具体的 我们抛出用这个
}
}
try {
proxy()
} catch (error){
console.log(error.message)
}

3

promise核心技术 2.两种回调函数 js中error的处理的更多相关文章

  1. js两种定义函数、继承方式及区别

    一:js两种定义函数的方式及区别 1:函数声明: function sayA() { alert("i am A"); } 2:函数表达式: var sayB = function ...

  2. [教程]Delphi 中三种回调函数形式解析

    Delphi 支持三种形式的回调函数 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer ).在 Delphi 中声明一般为 ...

  3. javascript两种声明函数的方式的一次深入解析

    声明函数的方式 javascript有两种声明函数的方式,一个是函数表达式定义函数,也就是我们说的匿名函数方式,一个是函数语句定义函数,下面看代码: /*方式一*/ var FUNCTION_NAME ...

  4. 两种const函数

    有两种const函数,声明如下:1.const T func();2.T func() const;第一种表示返回的是const的类型,也即返回的值不能作为左值,楼主懂的.第二种表示该成员函数不能修改 ...

  5. 两种方法使用js读写cookie实现一个底部广告浮层效果

    下面一个案例实现了js实现一个页面浮层并且使用两种方法使用js读写cookie:来实现用户关闭广告的显示状态: 读者可以将下面代码复制到一个html文件试试效果:html的pre标签未两种js实现的方 ...

  6. 子查询。ANY三种用法。ALL两种用法。HAVING中使用子查询。SELECT中使用子查询。

    子查询存在的意义是解决多表查询带来的性能问题. 子查询返回单行多列: ANY三种用法: ALL两种用法: HAVING中的子查询返回单行单列: SELECT中使用子查询:(了解就好,避免使用这种方法! ...

  7. JS里面的两种运动函数

    最新学了一个新的运动函数,与最初学习的有所不同,第一个运动是根据运动速度完成运动 ,第二个则是根据运动的时间来完成运动,而且把之前的函数都进行了一些兼容处理,在这里列出了看一下: 第一种animate ...

  8. JS两种声明函数的方法以及调用顺序

    两种声明方法: 1. var a = function () {...}; 2. function a() {...}; 第一种方式必须先声明后调用,而第二种方式函数调用在声明之前之后都可以. //第 ...

  9. 两种open()函数

    C语言中文件操作函数中,open()有两种形式: 一种形式是有两个参数open2: 另一种形式是有三个参数open3: 共有的参数有两个,第一个是"被打开文件的路径",第二个是&q ...

随机推荐

  1. OpenResty 实现项目的灰度发布

    1.安装 openresty 依赖模块: [root@Centos opt]# yum -y install pcre-devel openssl openssl-devel postgresql-d ...

  2. Tornado -- 7 - 查询结果

    查询结果 查询结果总结: 条件查询 多表查询

  3. pandas包 —— drop()、sort_values()、drop_duplicates()

    一.drop() 函数 当你要删除某一行或者某一列时,用drop函数,它不改变原有的df中的数据,而是返回另一个dataframe来存放删除后的数据. 1.命令: df.drop() 删除行:df.d ...

  4. wdcp升级php5.8到php7.1.12后安装swoole

    http://pecl.php.net/package/swoole wget http://pecl.php.net/get/swoole-4.0.1.tgztar zxvf swoole-4.0. ...

  5. SwiftUI中多设备运行方法

    https://blog.csdn.net/weixin_42679753/article/details/94465674 https://www.jianshu.com/p/17fc7929fcb ...

  6. uniapp属性插值报错Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead.

    解决方法: 因为vue 2.x不支持对属性使用插值{{}}的方式赋值,所以要使用v-bind指令(或简写“:”)来指定属性. v-bind指令 v-bind:id="item.id" ...

  7. leetcode1019 Next Greater Node In Linked List

    """ We are given a linked list with head as the first node. Let's number the nodes in ...

  8. [题解] LuoguP2764 最小路径覆盖问题

    传送门 好久没做网络流方面的题发现自己啥都不会了qwq 题意:给一张有向图,让你用最少的简单路径覆盖所有的点. 考虑这样一个东西,刚开始,我们有\(n\)条路径,每条路径就是单一的一个点,那么我们的目 ...

  9. JuJu团队11月25号工作汇报

    JuJu团队11月25号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 于达 实现随机采样函数,进行onehot处理 预处理数据集,将数据集转为矩阵读入 数据集预处理比想象中麻 ...

  10. Python基础week1

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...