首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏代码编写世界

    JavaScript异步编程2——结合XMLHttpRequest使用Promise

    概述 2. 详论 3. 参考 1. 概述 在上一篇文章《JavaScript异步编程1——Promise的初步使用》,简单介绍了一下Promise的初步使用。 复习一下,Promise异步编程可以用如下的范式来编写: 定义一个函数(function A),这个函数返回一个Promise对象。 当异步操作完成了,就会执行相应分支的响应函数。 采用以上范式,可以通过Promise来进行Ajax操作,也就是XMLHttpRequest,毕竟这个操作在Web应用中实在太常见了。 2. 这两个例子都是将事件改造成Promise,那不是意味着对于异步编程而言,Promise要优于事件呢? 不能完全这么肯定,但是可以确定的是事件并不总是异步编程的最优实践。 使用Promise,可以更准确的进行异步行为。 3. 参考 Ajax原理-原生js的XMLHttpRequest对象意义 Javascript异步编程的4种方法

    1.3K10发布于 2021-04-20
  • 来自专栏李才哥

    异步编程

    异步编程.png 异步编程 函数式编程 高阶函数 高阶函数则是可以把函数作为参数,或是将函数作为返回值的函数, 除了通 常意义的函数调用返回外,还形成了一种后续传递风格 在自定义事件实例中,通过为相同事件注册不同的回调函数 ,可以很灵活地处理业务逻辑 偏函数用法 通过指定部分参数来产生一个新的定制函数的形式就是偏函数 异步编程的优势与难点 优势 Node带来的最大特性莫过于基于事件驱动的非阻塞I/O模型 只要合理利用Node 的异步模型与V8的高性能,就可以充分 发挥CPU和I/O资源的优势 难点 try/catch的功效在此异步编程中不会发挥任何作用 函数嵌套过深 阻塞代码 多线程编程 异步转同步 异步编程解决方案 事件发布 结果分组 异步编程方案wind · 异步任务定义 · $await()与任务模型 · 异步方法转换辅助函数 异步并发控制 bagpipe的解决方案 通过一个队列来控制并发量 如果当前活跃(指调用发起但未执行回调 )的异步调用量小于限定值,从队列中取出执行 如果活跃调用达到限定值,调用暂时存放在队列中 每个异步调用结束时,从队列中取出新的异步调用执行 拒绝模式 超时控制 async的解决方案 async也提供了一个方法用于处理异步调用的限制

    1.1K00发布于 2021-02-28
  • 来自专栏.NETCORE

    异步编程

    一、为什么要用异步编程               异步的优点:可以提升效率,节省时间         注意:异步并不能使得单个请求的速度提升只是相较于同步可以处理更多的请求二、async ,await 惯例:异步方法名字以Async结尾。2) 即使方法没有返回值,也最好把返回值声明为非泛型的Task。 ("num invalid"); } }async方法缺点:1、异步方法会生成一个类,运行效率没有普通方法高;2、可能会占用非常多的线程 Task<string> t1 = File.ReadAllTextAsync("d:/1.txt");Task<string> t2 = File.ReadAllTextAsync("d:/2.txt t3);string s1 = results[0];string s2 = results[1];string s3 = results[2];11、异步其他问题接口中的异步方法:async是提示编译器为异步方法中的

    1.1K30编辑于 2023-01-13
  • 来自专栏睡不着所以学编程

    异步编程

    现在开始学习新的东西了,异步编程,觉得有点儿难,有些东西理解不了,话说现在我的学习进度很慢,需要加快点速度了。 异步编程的含义是什么呢,如果程序调用某个方法,等待其执行全部处理后才能继续执行,我们称其为同步的。相反,在处理完成之前就返回调用方法则是异步的,异步编程可以大大提高的性能。 import asyncio async def fun(a, b): await asyncio.sleep(2) return a + b result = fun(2, 3 asyncio.create_task()以异步方式同时运行协程的函数Tasks。这个await后面接的是task对象。 import asyncio import time #asyncio.create_task()以异步方式同时运行协程的函数Tasks。

    87830编辑于 2022-09-20
  • 来自专栏小工匠聊架构

    异步编程 - 01 漫谈异步编程发展史

    ---- 同步编程vs异步编程 同步编程的优点和问题: 同步编程, 简单且符合思维习惯,但在性能瓶颈时需要引入更多线程以实现并行化处理。 多线程访问共享资源引入了资源争用和并发问题。 异步编程的优点: 异步编程允许程序并行运行,将工作单元与主应用程序线程分开独立运行,并在完成后通知主应用程序线程结果或失败原因。 异步编程提高应用程序性能和响应能力。 ---- RPC框架的异步请求 上面讲解了单JVM内的异步编程,那么对于跨网络的交互是否也存在异步编程范畴呢? 同步RPC调用 对于网络请求来说,同步调用是比较直截了当的。 其实,有了CompletableFuture实现异步编程,我们可以很自然地使用适配器来实现Reactive风格的编程。 ---- 异步编程框架 为了更好地处理异步编程,降低异步编程的成本,一些框架也应运而生, 比如高性能线程间消息传递库Disruptor,其通过为事件(event)预先分配内存、无锁CAS算法、缓冲行填充

    58110编辑于 2023-09-07
  • 来自专栏学习及遇到的问题记录

    Java异步编程

    Java异步编程 1、什么是java异步编程 Java异步编程是一种处理并发问题的技术,它可以在执行耗时操作的同时,不阻塞主线程,从而提高程序的性能和响应速度。 2异步编程有什么作用 Java异步编程可以带来以下几个方面的作用: 提高程序性能和响应速度:异步编程可以让程序在执行一个耗时操作的同时,继续执行其他操作,从而提高程序的并发能力和响应速度。 3、异步编程常用于哪些业务 Java异步编程通常应用于以下几个业务场景: 网络通信:网络通信是一个比较耗时的操作,使用异步编程可以在等待网络通信结果的同时,继续执行其他操作,提高程序的响应速度。 4、异步编程的方式 Java异步编程的方式有以下几种: 回调函数:回调函数是一种基于接口的编程方式,可以在异步操作完成后调用回调函数来处理异步操作的结果。 RxJava:RxJava是一个基于响应式编程的Java库,支持异步和并发编程,可以简化异步编程的复杂性。

    1.2K10编辑于 2023-05-06
  • 来自专栏前端进阶之路

    JavaScript异步编程

    ,这一切,都需要更强大、更合理的异步方法,通过这篇文章,我想对目前已有JavaScript异步的处理方式做一个总结,同时试着去解释为什么会出现这些技术,让大家对JavaScript异步编程有一个更宏观的理解 这里,我们引出了回调函数处理异步的第二个问题:控制反转。 综上,回调函数处理异步流程存在2个问题: 1. 缺乏顺序性: 回调地狱导致的调试困难,和大脑的思维方式不符 2. Step2 - Promise 开门见山,Promise解决的是回调函数处理异步的第2个问题:控制反转。 总结 本文通过四个阶段来讲述JavaScript异步编程的发展历程: 第一个阶段 - 回调函数,但会导致两个问题: 缺乏顺序性: 回调地狱导致的调试困难,和大脑的思维方式不符 缺乏可信任性: 控制反转导致的一系列信任问题 最后,希望大家可以通过这篇文章对JavaScript异步编程有一个更宏观的体系化的了解,我们一起进步。

    1.5K20发布于 2018-10-31
  • 来自专栏一个执拗的后端搬砖工

    Spring异步编程

    这些场景都可以考虑使用异步编程,所谓异步编程,就是不使用业务主线程,利用线程池或者其他套件开启新的线程完成后续操作,针对不关心执行结果的场景直接使用新线程完成后续业务,主线程直接返回调用,对于关心执行结果的场景 二、Spring异步编程介绍 spring3.1版本开始提供了开箱即用的异步编程套件,相关实现都放在spring-context模块,不需要引入其他额外的包,在配置类或者应用启动门面类上添加@EnableAsync spring异步编程的实现依赖于Aop和动态代理,其具体实现此处不做赘述,简单描述一下spring异步编程用到的几个核心概念: 切入点(Pointcut):用白话来说,spring要对哪些功能做增强处理 就这么简单,我们通过两个注解就完成了异步编程. 五、总结 从本篇第三节异步编程使用方式来看,spring异步编程接入特别简单,但是从第四节的原理和源码解析来看,其实现也挺复杂的,这就是spring的强大之处,把困难留给自己,把便利留给使用者,

    2.1K21发布于 2021-04-26
  • 来自专栏ccylovehs

    JavaScript异步编程

    1.前言 平时开发经常会用到js异步编程,由于前端展示页面都是基于网络机顶盒(IPTV的一般性能不太好,OTT较好),目前公司主要采取的异步编程的方式有setTimeout、setInterval、requestAnimationFrame 2.JS 运行机制 JS 是单线程运行的,这意味着两段代码不能同时运行,而是必须逐步地运行,所以在同步代码执行过程中,异步代码是不执行的。只有等同步代码执行结束后,异步代码才会被添加到事件队列中。 foo依次弹出) 关于并发模型和Event Loop 请看MDN(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop) 3.异步编程 关于异步编程的方式,常用的定时器、ajax、Promise、Generator、async/await,详细介绍如下: 3.1.定时器 3.1.1.setTimeout与setInterval 这里拿 3.3.Promise Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。

    1.2K20发布于 2018-09-14
  • 来自专栏编程微刊

    promis:异步编程

    promise对象用于延迟计算和异步计算:一个promise对象代表着一个还未完成,但预期将来完成的操作 Image.png Image.png 打印结果如下: <! , reject) { setTimeout(function() { resolve("定时器"); }, 1000 * 2) function(){ resolve("定时器执行完毕"); },1000*2) ; }).then(function(result){ console.log("第一个 then 有异步"); result }); },1000 * 2)

    17300编辑于 2025-05-16
  • 来自专栏杨不易呀

    「Dart」异步编程

    前言在 JavaScript 和 Dart 中,异步编程是一个 非常重要 的概念我将通过一些基本的异步编程示例来展示两种语言的异同异步函数(Async Functions)JavaScript在 JavaScript Dart 需要使用 Future 类型来表示异步操作的结果。事件循环和异步回调JavaScriptJavaScript 依赖于事件循环和回调函数来处理异步操作。 (seconds: 2), () { return "User data"; });}void main() { fetchUserData().then((data) { Future<String> fetchUserData() { return Future.delayed(Duration(seconds: 2), () { return "User 通过这种方式,Dart 使异步编程更加直观和易于管理,特别是在处理复杂的异步操作和多个 Future 时。在Dart语言中,“Future”是一种用于表示异步操作的对象。

    45510编辑于 2024-01-02
  • 来自专栏前端卡卡西

    Js异步编程

    回调函数 function say(callback) { setTimeout(() => { console.log('11111') callback() }, 1000) } say(() => { console.log('2222') }) Promise new Promise(function (resolve, reject) { setTimeout(() => { console.log('11111')

    3.6K20编辑于 2022-02-25
  • 来自专栏HZFEStudio

    JavaScript 异步编程

    完整高频题库仓库地址:https://github.com/hzfe/awesome-interview 完整高频题库阅读地址:https://febook.hzfe.org/ 相关问题 JavaScript 异步编程方案有哪些 JavaScript 异步编程方案各有什么优缺点 回答关键点 阻塞 事件循环 回调函数 JavaScript 是一种同步的、阻塞的、单线程的语言,一次只能执行一个任务。 2. 定时器:setTimeout/setInterval/requestAnimationFrame 这三个都可以用异步方式运行代码。 ", "hzfe2", "hzfe3"] fn1打印 // fn2: hzfe1,hzfe2,hzfe3 发布/订阅模式可以更细致地了解到有多少种事件类型以及每种类型对应的订阅事件,方便进一步的监听与控制 生成器 Generator Generator 函数是 ES6 提供的一种异步编程解决方案,语法与传统函数完全不同,最大的特点就是可以控制函数的执行。

    1.4K00发布于 2021-10-30
  • 来自专栏ShanSan的云原生之路

    JS异步编程

    什么是异步 同步(sync)是一件事一件事的执行,只有前一个任务执行完毕才能执行后一个任务。异步(async)相对于同步,程序无须按照代码顺序自上而下的执行。 JS常见的异步模式 常见的异步模式有六种: 回调函数 事件监听 发布/订阅模式 promise Generator(ES6) async/await(ES7) 回调函数 回调函数是异步操作最基本的方法。 Promise Promise是ES6推出的一种解决异步编程的解决方案。 console.log(res) return ajax(url1) }).then(res => { console.log(res) return ajax(url2) 2、当这个异步任务有了运行结果,Event Table会将这个回调函数移入Event Queue,进入等待状态。

    3.9K30发布于 2020-07-06
  • 来自专栏Android研究院

    JavaScript 异步编程

    ❝掌握JavaScript主流的异步任务处理 ( 本篇文章内容输出来源:《拉钩教育大前端训练营》参阅《你不知道的JavaScript中卷》异步章节)❞ JavaScrip 采用单线程模式工作的原因,需要进行 异步模式 通过一个图来演示异步任务,用到事件循环与消息队列机制实现 ? Untitled 0.png Promise异步方案 常见的异步方案就是通过回调函数来实现,导致回调地狱的问题,CommonJS社区提出了Promise方案并在ES6中采用了。 目前大部分异步回调作为宏任务 常见的宏任务与微任务如下图所示: ? Untitled 2.png 下面是JavaScript执行异步任务的执行时序图: ? g.throw(err); }) } handleResult(g.next()); } co(main); Async/Await 语法糖 推荐使用异步编程的标准

    1.5K10发布于 2020-07-31
  • 来自专栏小菜与老鸟

    Flutter异步编程

    Flutter异步编程-Futures 本文大纲 1. 什么是Future? 2. 如何创建Future实例? 3. 一个令人迷惑的例子 4. 参考和更多阅读 1. 什么是Future? 有几个术语需要理解下: - 同步操作:同步操作会阻塞后面其他的操作直至完成 - 同步函数:同步函数内部一定都是同步操作,顺序完成 - 异步操作:异步操作允许在其完成之前进行其他操作(执行其他代码) - 异步函数:异步函数内部至少有一个异步操作,允许有同步操作和同步函数存在。 当我们调用一个异步函数,异步函数会返回一个未完成的 future 实例。这个 future 会等待异步函数的操作完成或者失败抛出错误异常。 1.2 什么是已完成? 当异步操作成功,future便会以操作的结果结束,否则以错误结束。 我们常常见到异步函数返回值类型为 Future<T>。

    1.1K40发布于 2020-02-20
  • 来自专栏OECOM

    javascript异步编程

    简单来说,异步编程就是在执行一个指令之后不是马上得到结果,而是继续执行后面的指令,等到特定的事件触发后,才得到结果。 也正是因为这样,我们常常会说: JavaScript 是由事件驱动的。 就以目前的标准来看,异步编程一般有一下几种方式:回调函数、Promise、Generator和await/async。 1. 这样,如果我们需要在查到结果之后才做某些事情的话,就需要把相关的代码写在回调里面,如果涉及到多个这样的异步操作,就势必会陷入到回调地狱中去。 2.  先看一段代码: function* gen(x){ var y = yield x + 2; return y; } 上面代码就是一个 Generator 函数。 调用指针 g 的 next 方法,会移动内部指针(即执行异步任务的第一段),指向第一个遇到的 yield 语句,上例是执行到 x + 2 为止。

    79510发布于 2020-07-01
  • 来自专栏Krryblog

    JavaScript 异步编程

    博客地址:https://ainyi.com/96 众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程 同步编程异步编程 同步编程,计算机一行一行按顺序依次执行代码 ,当前代码任务执行时会阻塞后续代码的执行;典型的请求-响应模型就是这样,当请求调用一个函数或方法后,需等待其响应返回,然后执行后续代码 异步编程,执行当前任务时(执行中),也可直接执行下一个任务;多个任务并发执行 ;那么 JavaScript 单线程的异步编程可以实现多任务==并发执行== 重点实现 js 异步的方式,就是==事件循环==,之前写过关于事件循环的例子,可看:JavaScript 事件循环、异步和同步 即使将时间设置为 0,也会延迟执行,即异步执行。 console.log(error, 'unhappy') }) Generator generator 也叫做生成器,它是 ES6 中引入的一种新的函数类型,内部拥有能够多次启动和暂停代码执行的强大能力,那么也能够用于异步编程

    87630发布于 2020-09-15
  • 来自专栏ops技术分享

    JavaScript 异步编程

    在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。 以上是关于异步的概念的解释,接下来我们通俗地解释一下异步异步就是从主线程发射一个子线程来完成任务。 什么时候用异步编程 在前端编程中(甚至后端有时也是这样),我们在处理一些简短、快速的操作时,例如计算 1 + 1 的结果,往往在主线程中就可以完成。主线程作为一个线程,不能够同时接受多方面的请求。 ; }, 3000); document.getElementById("demo2").innerHTML="RUNOOB-2!" ; console.log("2"); 异步 AJAX 除了 setTimeout 函数以外,异步回调广泛应用于 AJAX 编程

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

    在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。 以上是关于异步的概念的解释,接下来我们通俗地解释一下异步异步就是从主线程发射一个子线程来完成任务。 什么时候用异步编程 在前端编程中(甚至后端有时也是这样),我们在处理一些简短、快速的操作时,例如计算 1 + 1 的结果,往往在主线程中就可以完成。主线程作为一个线程,不能够同时接受多方面的请求。 ; // 三秒后子线程执行 }, 3000); document.getElementById("demo2").innerHTML="RUNOOB-2!" // 三秒后子线程执行 RUNOOB-2! // 主线程先执行 异步 AJAX 除了 setTimeout 函数以外,异步回调广泛应用于 AJAX 编程

    15710编辑于 2025-12-16
领券