AJAX:宏任务与微任务

这篇具有很好参考价值的文章主要介绍了AJAX:宏任务与微任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

异步任务划分为了

 

  宏任务:由浏览器环境执行的异步代码

  微任务:由 JS 引擎环境执行的异步代码

宏任务和微任务具体划分:

AJAX:宏任务与微任务,Ajax,ajax,okhttp,前端

左边表格是宏任务,右边是微任务

事件循环模型

/**
 * 目标:阅读并回答打印的执行顺序
*/
console.log(1)
setTimeout(() => {
  console.log(2)
}, 0)
const p = new Promise((resolve, reject) => {
  resolve(3)
})
p.then(res => {
  console.log(res)
})
console.log(4)

执行过程:

1-JS引擎把console.log(1)放入调用栈中,执行后弹出

2-JS引擎发现setTimeout(…, 0) 是异步代码,且是宏任务,于是将它放入宿主环境(浏览器)中,执行setTimeout(…, 0),完成后放入宏任务队列中

3-JS引擎把new Promise()放入调用栈中,执行其中的console.log(3) ,然后执行其中的resolve(4), 意味着当前的Promise对象为已兑现状态,以上完成后new Promise()从栈弹出

4-JS引擎发现p.then()是同步代码,但是里面的回调函数是异步代码,而且p.then() 的回调函数是微任务,所以把它放入微任务队列中排队。执行后p.then() 出栈。

5-JS引擎把console.log(5)放入调用栈中,执行后弹出

6-此时,JS的调用栈空闲,调用任务队列中的回调函数,先调用微任务中的回调函数 console.log(result),因为微任务更接近JS引擎,推入调用栈,执行后出栈。然后调用宏任务中的console.log(2) ,推入调用栈,执行完后出栈。此时,JS的调用栈再次空闲,它会保持监视任务队列情况。

AJAX:宏任务与微任务,Ajax,ajax,okhttp,前端

参考:AJAX-Day04-09.微任务与宏任务_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-585943.html

到了这里,关于AJAX:宏任务与微任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端学习——ajax (Day3)

    使用 XMLHttpRequest XMLHttpRequest - 查询参数 XMLHttpRequest - 数据提交 Promise - 三种状态

    2024年02月16日
    浏览(45)
  • 前端学习——ajax (Day4)

    Promise - 链式调用

    2024年02月16日
    浏览(37)
  • 前端学习——ajax (Day1)

    axios 使用 练习 练习 案例 axios 错误处理 https://apifox.com/apidoc/shared-1b0dd84f-faa8-435d-b355-5a8a329e34a8 url好像失效了

    2024年02月16日
    浏览(39)
  • 前端学习--Ajax(3) XHR/axios

    1.1 概念 XMLHttpRequest(XHR)是一种用于在客户端和服务器之间发送HTTP请求的JavaScript API。它允许客户端在不重新加载整个页面的情况下向服务器发送请求,并根据服务器的响应更新页面的局部内容。Ajax是基于XHR封装的。 1.2 使用xhr发起get请求 步骤 创建XHR对象 调用XHR.open()函数

    2023年04月26日
    浏览(39)
  • 前端常见面试题之ajax、http

    xhr.readyState 有以下状态值,分别代表的意思如下: 状态值 意思 0 未初始化,尚未调用open方法 1 启动,已经调用open方法 2 发送,已经调用send方法 3 接收,正在接收响应数据 4 完成,已经接收到全部响应数据 请注意,在这个表格中,状态值是从0开始的,0代表xhr对象已经被创

    2024年01月17日
    浏览(50)
  • 前端知识笔记(二)———Django与Ajax

    特点:         异步提交         局部刷新 例子:github注册 动态获取用户名实时的跟后端确认并实时的展示到前端(局部刷新)  朝后端发送请求的方式         1.浏览器地址栏直接输入url回车 -----》get请求         2.a标签的href属性  -----》get请求         3.form表单 --

    2024年02月05日
    浏览(41)
  • 前端开发中的ajax请求、axios封装

    目录 浏览器http请求 同步 js标签跨域、url 异步ajax、websock协议 ajax是异步的技术术语,最早的api是xhr(XMLHttpRequest) fetch es6 api axios 封装axios(无论用requst还是axios请求都会生效) src/utils/request.ts请求/响应拦截器封装 ts post请求request.post(url)和 通用请求request({url,method:\\\'post\\\'})对象

    2024年02月11日
    浏览(51)
  • 1、关于前端js-ajax绕过

    、js--Ajax 传统请求跟js--Ajax请求的差别 在实例中用的上js-ajax的有 表单验证: 在用户填写表单时,可以使用 Ajax 在不刷新页面的情况下验证表单字段,并提供即时反馈。 实时搜索: 在搜索框中输入内容时,可以使用 Ajax 在用户输入的同时向服务器发送请求,动态获取搜索结

    2024年02月05日
    浏览(65)
  • 探索 AJAX 技术:实现动态数据交互的前端利器

    简介: AJAX(Asynchronous JavaScript and XML)技术在 Web 前端开发中扮演着重要的角色,它通过异步通信和动态内容更新,为用户带来更好的交互体验。本篇笔记将详细探索 AJAX 技术,并通过生动的代码演示来展示其在实现动态数据交互方面的优势。 1. 异步通信 异步通信是一种在

    2024年02月14日
    浏览(45)
  • 前端如何中断请求 ( axios、原生 ajax、fetch)

    使用场景 在前端开发中,我们经常需要中断请求来优化性能或处理特定的业务需求。以下是一些常见的使用场景: 比如 重复请求:当页面中多个组件并发调用同一个接口时,在第一个请求返回后,我们可能需要中断其他组件对该接口的调用,以避免重复请求和冗余数据。这

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包