角色中宏任务微任务有哪些
时间: 2023-11-02 18:45:43 浏览: 45
在编程中,角色通常指的是JavaScript中的异步任务处理模型。在这个模型中,有宏任务(macro task)和微任务(micro task)这两种不同类型的任务。它们的执行顺序和优先级是不同的。
宏任务(macro task)包括:
1. 整体的script代码(作为第一个宏任务执行)
2. setTimeout和setInterval回调函数
3. I/O操作
4. UI渲染
微任务(micro task)包括:
1. Promise回调函数(then、catch、finally)
2. MutationObserver的回调函数
3. process.nextTick(Node.js环境)
在事件循环中,当一个宏任务执行完毕后,会检查是否有微任务需要执行。如果有微任务,会一直执行完所有的微任务,直到微任务队列为空,然后再执行下一个宏任务。
需要注意的是,微任务具有更高的优先级,它们会在下一个宏任务之前立即执行。这就意味着,在同一个宏任务中产生的微任务会在该宏任务结束前执行完毕。
相关问题
js中宏任务和微任务谁先执行
在JavaScript中,宏任务和微任务都是异步任务,宏任务包括DOM事件、定时器等,而微任务包括Promise、MutationObserver等。微任务的执行优先级比宏任务高,也就是说微任务先于宏任务执行。
举个例子,假设当前执行栈为空,同时有一个宏任务和一个微任务需要执行,那么先执行微任务,再执行宏任务。在微任务执行期间,如果产生了新的微任务,会继续执行新的微任务,直到微任务队列为空,才会去执行宏任务。
C语言中宏定义
宏定义是C语言中一种预处理指令,它可以将一段代码片段定义为一个标识符,这样在程序中使用这个标识符时,就相当于使用了被定义的代码片段。
宏定义的语法格式如下:
```c
#define 标识符 替换文本
```
其中,标识符是你要定义的宏的名称,替换文本是你要定义的代码片段。当程序中出现标识符时,预处理器会将其替换为对应的代码片段。
例如,下面的宏定义将常量 PI 定义为 3.14159:
```c
#define PI 3.14159
```
在程序中使用 PI 时,就会被替换为 3.14159。
宏定义还可以带有参数,被称为带参数的宏定义。带参数的宏定义的语法格式如下:
```c
#define 标识符(参数列表) 替换文本
```
其中,参数列表是一组用逗号分隔的参数名称,替换文本中使用这些参数时需要用到参数名称。
例如,下面的宏定义将带有一个参数的宏 MAX 定义为求两个数中的最大值:
```c
#define MAX(a,b) ((a)>(b)?(a):(b))
```
在程序中使用 MAX(x,y) 时,就会将其替换为 ((x)>(y)?(x):(y)),从而求出 x 和 y 中的最大值。