首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏前端二次元

    JavaScript——异步进阶

    本期介绍JS 的特色就是异步编程,所有有很多关于异步的考点,本章都会讲解。如 event loop、promise、async-await、微任务和宏任务。学不会这些,就不算是精通 JS。 event loop,也叫事件循环/事件轮询,JS是单线程运行的,从前到后,一行一行执行,如果某一行执行报错,则停止下面的代码执行,先把同步代码执行完,再执行异步异步要基于回调来实现,event loop 就是异步回调的实现原理。 callback hell(回调地狱),Promise then catch 链式调用,但也是基于回调函数,async/await是用同步语法编写异步代码,是同步语法,彻底消灭回调函数,是异步写法的最佳解决方式 ,是消灭异步回调的终极武器。

    41210编辑于 2023-11-23
  • 来自专栏大数据

    JavaScript进阶-Promise与异步编程

    JavaScript开发中,异步编程是绕不开的一环,而Promise作为解决异步问题的重要工具,自ES6起便成为开发者手中的利器。 本文旨在深入浅出地解析Promise的基本概念、常见应用场景、易错点及其规避策略,并辅以代码示例,帮助你更稳健地驾驭异步编程。 Promise基础 什么是Promise? setTimeout(reject, 800, '超时')) ]).then(data => { // ... }).catch(error => { // 处理超时或失败 }); 总结 Promise是JavaScript 异步编程的核心之一,掌握其基本原理和高级用法对于提高代码质量至关重要。 通过识别并避免上述易错点,结合async/await等现代语法特性,可以使异步逻辑变得更加清晰和易于管理。不断实践,逐步深入理解异步编程模型,将使你在面对复杂异步流程时更加游刃有余。

    36510编辑于 2024-06-21
  • 来自专栏coding个人笔记

    JavaScript异步

    ,何为异步? 我想到了ajax的异步,但是还是没明白,查了很多讲解,越看越不明白,最后找到了任务队列和主线程,才明白了什么叫异步。 我们都知道JavaScript最大的特点就是单线程,单线程限制了任务必须排队,等待前面的任务执行完了才能下一个任务。这也叫同步,同步的意思就是必须等上一个任务执行完毕才能执行下一个任务。 所以JavaScript把任务分成了两种,一种是同步任务,另一种是异步任务。 异步其实挺简单的,可能本人刚开始进入了误区,理解异步可以让我们对于JavaScript的执行原理有一定的理解。 (完)

    70210发布于 2020-04-23
  • 来自专栏hotarugaliの技术分享

    JavaScript异步操作

    Promise.all()和Promise.race() 并行调用异步操作 两个函数均用于并行调用多个异步操作使用 All:两个异步操作都resolve之后调用then() var p1 = new Promise p1, p2]).then(function (results) { console.log(results); // 获得一个Array: ['P1', 'P2'] }); Race:最快的异步操作

    63810编辑于 2022-03-01
  • 来自专栏前端进阶之路

    JavaScript异步编程

    #前言 从我们一开始学习JavaScript的时候就听到过一段话:JS是单线程的,天生异步,适合IO密集型,不适合CPU密集型。 但是,多数JavaScript开发者从来没有认真思考过自己程序中的异步到底是怎么出现的,以及为什么会出现,也没有探索过处理异步的其他方法。到目前为止,还有很多人坚持认为回调函数就完全够用了。 但是,随着JavaScript面临的需求越来越多,它可以运行在浏览器、服务器、甚至是嵌入式设备上,为了满足这些需求,JavaScript的规模和复杂性也在持续增长,使用回调函数来管理异步也越来越让人痛苦 ,这一切,都需要更强大、更合理的异步方法,通过这篇文章,我想对目前已有JavaScript异步的处理方式做一个总结,同时试着去解释为什么会出现这些技术,让大家对JavaScript异步编程有一个更宏观的理解 最后,希望大家可以通过这篇文章对JavaScript异步编程有一个更宏观的体系化的了解,我们一起进步。

    1.5K20发布于 2018-10-31
  • 来自专栏前端学习文档

    JavaScript 异步模式

    source=cloudtencen 什么是异步模式? 不会等待当前任务执行完毕,才会去执行下一个任务,这就是异步模式(Asynchronous)。 开启异步后,就会跳过本任务,开始执行下一个任务,后续的逻辑一般会通过回调函数的方式定义。 异步模式执行中,涉及到调用栈(Call stack)、消息队列(Queue)、微任务队列(Microtask Queue)、事件循环(Eevent Loop)、运行环境(浏览器是 WebAPIs)。 异步方案 ES2015 提供的 Pormise 方案 ES2015 提供的 Generator ES2017 提供的 Async / Await 语法糖(可以写出更扁平的异步代码) 基础案例 console.log

    48420编辑于 2023-05-14
  • 来自专栏ops技术分享

    JavaScript 异步编程

    异步的概念 异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。 而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。 简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。 以上是关于异步的概念的解释,接下来我们通俗地解释一下异步异步就是从主线程发射一个子线程来完成任务。 为了解决这个问题,JavaScript 中的异步操作函数往往通过回调函数来实现异步任务的结果处理。 当然,JavaScript 语法十分友好,我们不必单独定义一个函数 print ,我们常常将上面的程序写成: 实例 setTimeout(function () { document.getElementById

    83230发布于 2021-07-19
  • JavaScript 异步编程

    异步的概念 异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。 而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。 简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。 以上是关于异步的概念的解释,接下来我们通俗地解释一下异步异步就是从主线程发射一个子线程来完成任务。 为了解决这个问题,JavaScript 中的异步操作函数往往通过回调函数来实现异步任务的结果处理。 当然,JavaScript 语法十分友好,我们不必单独定义一个函数 print ,我们常常将上面的程序写成: 实例 setTimeout(function () { document.getElementById

    15710编辑于 2025-12-16
  • 来自专栏HZFEStudio

    JavaScript 异步编程

    异步编程方案有哪些 JavaScript 异步编程方案各有什么优缺点 回答关键点 阻塞 事件循环 回调函数 JavaScript 是一种同步的、阻塞的、单线程的语言,一次只能执行一个任务。 "; document.body.appendChild(pElem); }); 异步回调是编写和处理 JavaScript 异步逻辑的最常用方式,也是最基础的异步模式。 但是随着 JavaScript 的发展,异步回调的问题也不容忽视: 回调表达异步流程的方式是非线性的,非顺序的,理解成本较高。 回调会受到控制反转的影响。 6. async/await async/await 属于 ECMAScript 2017 JavaScript 版的一部分,使异步代码更易于编写和阅读。通过使用它们,异步代码看起来更像是同步代码。 Web Worker 主要应用场景: 处理密集型数学计算 大数据集排序 数据处理(压缩,音频分析,图像处理等) 高流量网络通信 参考资料 异步 JavaScript 使用 Web Worker

    1.4K00发布于 2021-10-30
  • 来自专栏Android研究院

    JavaScript 异步编程

    ❝掌握JavaScript主流的异步任务处理 ( 本篇文章内容输出来源:《拉钩教育大前端训练营》参阅《你不知道的JavaScript中卷》异步章节)❞ JavaScrip 采用单线程模式工作的原因,需要进行 异步模式 通过一个图来演示异步任务,用到事件循环与消息队列机制实现 ? Untitled 0.png Promise异步方案 常见的异步方案就是通过回调函数来实现,导致回调地狱的问题,CommonJS社区提出了Promise方案并在ES6中采用了。 目前大部分异步回调作为宏任务 常见的宏任务与微任务如下图所示: ? Untitled 2.png 下面是JavaScript执行异步任务的执行时序图: ? 处理then方法可以被多次调用 9. then方法可以被链式调用 后面then方法回调函数拿到的值是上一个then方法 回调函数的返回值 10. then 返回值是普通值还是Promise对象 11.

    1.5K10发布于 2020-07-31
  • 来自专栏OECOM

    javascript异步编程

    简单来说,异步编程就是在执行一个指令之后不是马上得到结果,而是继续执行后面的指令,等到特定的事件触发后,才得到结果。 也正是因为这样,我们常常会说: JavaScript 是由事件驱动的。 在 JavaScript 中,Generator 的 function 与 函数名之间有一个 *, 函数内部使用 yield 关键词,定义不同的状态。 整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用 yield 语句注明。Generator 函数的执行方法如下。 JavaScript异步回调问题,目前可以借助 babel 在生产环境中使用。 使用 await/async 可以让异步的操作以同步的方式来写。

    79510发布于 2020-07-01
  • 来自专栏Cellinlab's Blog

    JavaScript Async (异步)

    # 异步 事实上,程序中现在 运行的部分和将来 运行的部分之间的关系就是异步编程的核心。 # 异步控制台 并没有什么规范或一组需求指定 console.* 方法族如何工作——它们并不是 JavaScript 正式的一部分,而是由宿主环境添加到 JavaScript 中的。 换句话说,JavaScript 引擎本身并没有时间的概念,只是一个按需执行 JavaScript 任意代码片段的环境。“事件”(JavaScript 代码执行)调度总是由包含它的环境进行。 并行线程的交替执行和异步事件的交替调度,其粒度是完全不同的。 JavaScript 从不跨线程共享数据,这意味着不需要考虑这一层次的不确定性。但是这并不意味着 JavaScript 总是确定性的。 我们的顺序阻塞式的大脑计划行为无法很好地映射到面向回调的异步代码。这就是回调方式最主要的缺陷:对于它们在代码中表达异步的方式,我们的大脑需要努力才能同步得上。

    92330编辑于 2023-05-17
  • 来自专栏Krryblog

    JavaScript 异步编程

    博客地址:https://ainyi.com/96 众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程 同步编程和异步编程 同步编程,计算机一行一行按顺序依次执行代码 ;那么 JavaScript 单线程的异步编程可以实现多任务==并发执行== 重点实现 js 异步的方式,就是==事件循环==,之前写过关于事件循环的例子,可看:JavaScript 事件循环、异步和同步 首先 JavaScript 的同步任务是进入主线程的执行栈执行;异步任务则进入==消息队列(任务队列)==,一个存储着待执行任务的队列,严格按照时间先后顺序执行,排在队头的任务将会率先执行,而排在队尾的任务会最后执行 ,重复这个过程 [28.jpg] 简单来说:事件循环其实就是入栈出栈的循环 这样就能实现异步方式 js 的异步方式 setTimeout ajax Promise Generator setTimeout 即使将时间设置为 0,也会延迟执行,即异步执行。

    87630发布于 2020-09-15
  • 来自专栏ccylovehs

    JavaScript异步编程

    ('bar...'); 7 } 8 //这里采用ES6的箭头函数、Promise函数 9 var promise = new Promise(function(resolve,reject){ 10 再往下是foo方法,此为同步任务,借用网络流行的一句话 “JavaScript中的函数是一等公民”,打印日志start...后回调执行bar方法,到这里就有两个执行栈了(依次将foo、bar放入栈中, bar执行完就弹出栈,foo依次弹出) 关于并发模型和Event Loop 请看MDN(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop execFn(); 8 },5000); 9 function timeChange(callback){ 10 8 window.requestAnimationFrame = function(callback){ 9 var now = new Date().getTime(); 10

    1.2K20发布于 2018-09-14
  • 来自专栏Super 前端

    JavaScript异步编程

    Javascript语言的执行环境是”单线程”(single thread)。所谓”单线程”,就是指一次只能完成一件任务。 Javascript语言将任务的执行模式分成两种:同步(Synchronous)和异步(Asynchronous)。 “异步模式”非常重要。 在浏览器端,耗时很长的操作都应该异步执行,避免浏览器失去响应,最好的例子就是Ajax操作。 在服务器端,”异步模式”甚至是唯一的模式,因为执行环境是单线程的,如果允许同步执行所有http请求,服务器性能会急剧下降,很快就会失去响应。 然而,异步执行最大的问题就是执行顺序。 , 1000); 这些操作不能在初始化的解析过程中完成的,也就是说在JavaScript代码运行的同时必须新启动一个解析器来解析新的代码。性能消耗较大。

    64141发布于 2019-08-15
  • 来自专栏XC's Blog 日常笔记

    JavaScript 进阶

    中使用 {} 包裹的代码块内部声明的变量外部将有可能无法被访问 for(let i=0;i<10;i++){ // i 只能的该代码块中被访问 console.log(i) } // 超出了 script> 标签 和 .js 文件的最外层就是全局作用域,在此声明的变量在函数内部也可以访问,全局作用域下声明的变量,任何其他作用域都可以被访问 //全局作用域,下声明变量num const num=10 变量在未声明即被访问时会报语法错误 变量在var声明之前即被访问,变量的值为 undefined let / const 声明的变量不存在变量提升 变量提升出现在相同作用域当中 实际开发中推荐先声明再访问变量 函数进阶 0 for(let i = 0;i < arguments.length;i++){ s += arguments[i] } return s } sum(5,10JavaScript 内置了一些构造函数,绝大部的数据处理都是基于这些构造函数实现的,JavaScript 基础阶段学习的 Date 就是内置的构造函数。

    1.8K20编辑于 2023-04-03
  • 来自专栏神葳总局

    JavaScript进阶

    JavaScript进阶学习笔记 # 正则表达式 正则用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则, 也可以将一个字符串中符合规则的内容提取出来。 ,属于onkeydown的默认行为 //如果在onkeydown中取消了默认行为,则输入的内容,不会出现在文本框中 return false; } }; 1 2 3 4 5 6 7 8 9 10 IE11,还可以通过一些浏览器中特有的对象,来判断浏览器的信息 //比如:ActiveXObject alert("你是IE11,枪毙了你~~~"); } 1 2 3 4 5 6 7 8 9 10 } else { //IE8的方式,没有getComputedStyle()方法 return obj.currentStyle[name]; } } 1 2 3 4 5 6 7 8 9 10 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 复制 ---- # JSON JavaScript

    1.8K20发布于 2021-01-22
  • 来自专栏FunTester

    JavaScript 异步编程入门

    最近开始不断学习实践 JavaScript ,出于性能测试的敏感,首先研究了 JavaScript异步编程实践,目前看跟之前学过的 Java 和 Go 都不太一样。 在 JavaScript 中,异步编程尤为重要,原因在于它的单线程特性。JavaScript 在浏览器环境下运行时,只有一个主线程负责执行代码。 在 JavaScript异步编程中,回调函数是最早且最基础的实现方式之一。当某个异步操作(如网络请求或定时器)完成时,JavaScript 运行时环境会调用提供的回调函数,继续执行后续的逻辑。 这种模式允许我们在异步任务完成后进行处理,而不阻塞主线程。 在 JavaScript 中,回调函数通过结合浏览器或 Node.js 的事件循环机制来实现异步行为。 异步编程的重要性 在 JavaScript 中,异步编程至关重要,因为 JavaScript 运行在单线程环境中,尤其是在浏览器和 Node.js 等平台中。单线程意味着同一时间只能执行一个任务。

    49510编辑于 2025-01-23
  • 来自专栏程序你好

    JavaScript异步图像上传

    本文的重点是在图像上传至服务器时使用JavaScript立即显示图像。 介绍 当使用JavaScript将图像上传到服务器时,根据服务器操作的复杂性,可能需要几秒到几分钟来完成操作。 图像缩略图的设置是使用AWS Lambda完成的,在使用web应用程序的JavaScript成功上传图像到S3之后,S3将异步触发AWS Lambda函数,该函数将生成图像的缩略图并将其存储在另一个S3 使用JavaScript文件API,可以听改变事件处理程序和加载图像访问使用JavaScript。 步骤2:生成Base64缩略图 ? 使用JavaScript, HTML表单提交将异步触发,具体的代码将根据服务器实现而异,特别是在HTTP方法(例如,这里是POST)和URL方面。 如果您的用例涉及立即在web应用程序中显示图像的缩略图,如果在服务器中异步生成缩略图,仍然可以通过使用JavaScript在客户端中调整图像的大小来直接显示缩略图。 ?

    2K20发布于 2018-07-20
  • 来自专栏分享技术

    #JavaScript 异步编程入门

    JavaScript 中,异步编程对于经验丰富的开发人员来说是一个相对容易理解的概念。但对于初学者和一些中级开发者来说,这可能是一个非常具有挑战性的主题。在这里,让我们来看看!什么是异步编程? 也就是说,一个函数可以是同步的,也可以是异步的。这影响了如何调用函数以及如何定义它。那么函数是同步的和异步的有什么含义呢?首先,同步函数。 对于异步函数,没有线程阻塞。当线程调用该函数时,它不会等待该函数完成任务,而是继续执行其余的任务。const fs = require("fs");fs.readFile(". 在异步编程中,您只使用一个线程。与阻塞线程进行可能需要一段时间才能完成的任务不同,调度程序执行以下操作:安排任务完成时将调用的事件在任务期间使用 CPU 的空闲时间完成线程中的其他任务。 异步编程主要用于事件驱动应用程序。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    28340编辑于 2023-11-12
领券