Promise-以往的异步编程模式

要理解这个 double 函数在调度异步操作后为什么会立即退出,我们可以一步一步拆解它的执行流程。

首先,看一下 double 函数的定义:

function double(value) {setTimeout(() => setTimeout(console.log, 0, value * 2), 1000);
}

当你调用 double(3); 时,发生了以下几件事:

  1. 调用 double 函数:传递给它的值是 3
  2. 执行第一个 setTimeout:这个 setTimeout 被设置了一个延迟时间(1000毫秒或1秒)。它的回调函数是另一个 setTimeout 调用。
  3. 函数退出double 函数的执行到此结束。由于第一个 setTimeout 里面的操作是异步的,所以 double 函数不会等待它完成就直接退出了。这就是为什么说函数在调度异步操作后会立即退出。
  4. 第一个 setTimeout 的回调执行:大约1秒后,第一个 setTimeout 里的回调函数被执行。这个回调函数本身是另一个 setTimeout 调用,它立即调用 console.log 函数(延迟时间为0),并将 value * 2 的结果传递给它。
  5. 第二个 setTimeout 的回调执行:虽然延迟是0,但由于JavaScript的事件循环和任务队列的机制,console.log 函数的执行会被放入到任务队列中,等待当前执行栈清空,再执行。因此,console.log(value * 2)(即输出 6)会在第一个 setTimeout 的回调执行后尽快执行,但不会是立即执行。

总之,double 函数展示了如何通过嵌套 setTimeout 来安排异步任务。它利用JavaScript的事件循环机制,在调度异步操作(如延时调用)后立即退出。这个异步操作会在未来的某个时刻执行,但不会阻塞函数返回或后续代码的执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDK下载安装配置

一.JDK安装配置。 1.安装注意路径,其他直接下一步。 2.配置。 下接第4步. 代码复制: JAVA_HOME D:\Program Files\Java\jdk1.8.0_91 D:\Program Files\Java\jdk1.8.0_91\bin 3.验证(CMD)。 java javac java -version 二.下载 1.下载JDK1.5-1.9(所有版本)下载: https://www.…

docker环境中宿主机防火墙添加ssh无法生效的问题分析

背景 在部署了docker容器的环境中,要在防火墙开通22端口,即ssh服务,以便在终端可以正常登陆。使用firewall-cmd在docker区域添加了22端口,但是没有起作用。后再public区域添加22端口才起作用。为什么docker区域不起作用&#xff…

使用vuepress搭建个人的博客(一):基础构建

前言 vuepress是一个构建静态资源网站的库 地址:VuePress 一般来说,这个框架非常适合构建个人技术博客,你只需要把自己写好的markdown文档准备好,完成对应的配置就可以了 搭建 初始化和引入 创建文件夹press-blog npm初始化 npm init 引入包 npm install -D vuepress…

蓝桥杯_数学模板

1.试除法判定质数 #include <iostream> using namespace std;bool is_zs(int x) {if(x<2) return false;for(int i2;i<x/i;i)if(x%i0)return false;return true; }int main() {int n; cin>>n;while(n--){int x; cin>>x;if(is_zs(x)) cout<<&quo…

windows下安装iteliij Idea2023.3

首先从官网下载 下载 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 双击打开进行安装&#xff1a; 安装完成后&#xff0c;需要对Idea进行稍微处理下。使用我分享给大家的文件&#xff0c;操作以下步骤&#xff1a; 注意&#xff1a;不能打开IDEA软件。 进入到scripts中点击un…

C语言存储⽅式有哪⼏种?分别是什么?

一、问题 什么叫存储⽅式&#xff1f;存储⽅式有⼏种&#xff1f;分别是什么&#xff1f; 二、解答 因变量存储⽅式不同⽽产⽣的特性称作变量的⽣存期。⽣存期表示了变量存在的时间。⽣存期加上前⾯讲过的作⽤域是从时间和空间这两个不同的⻆度来描述变量的特性&#xff0c; 这…

[技术闲聊]我对电路设计的理解(一)

讲点题外话&#xff0c;也算回忆&#xff0c;捋一捋过往的生活。 大学毕业后&#xff0c;进入公司实习&#xff0c;从产线开始&#xff0c;为期一个月&#xff0c;当时课室负责人说&#xff0c;进入一家公司&#xff0c;首先了解公司的产品&#xff0c;产线是最直接最合适最近距…

独孤思维:高客单价项目,必须来一个

01 上次和水龙聊完以后&#xff0c;完成了图书电商项目小报童的梳理。 而且还让我规划后端低转高产品的设计。 目前独孤&#xff0c;准备以图书电商项目私教作为切入点&#xff0c;捆绑自己的合伙人。 设计高客单价项目。 所以&#xff0c;独孤4月的副业规划目标&#xff…

AI绘图:Stable Diffusion WEB UI 详细操作介绍:基础篇

接上一篇《AI绘图体验&#xff1a;Stable Diffusion本地化部署详细步骤》本地部署完了SD后&#xff0c;大家肯定想知道怎么用&#xff0c;接下来补一篇Stable Diffusion WEB UI 详细操作&#xff0c;如果大家还没有完成SD的部署&#xff0c;请参考上一篇文章进行本地化的部署。…

2.2.1.2-网格交易(python网格交易附实战交易记录)

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

C++之STL的algorithm(4)之拷贝相关算法(copy、replace、swap)整理

C之STL的algorithm&#xff08;4&#xff09;之拷贝相关算法&#xff08;copy、replace、swap&#xff09;整理 注&#xff1a;整理一些突然学到的C知识&#xff0c;随时mark一下 例如&#xff1a;忘记的关键字用法&#xff0c;新关键字&#xff0c;新数据结构 C 的查找算法整理…

多线程--深入探究多线程的重点,难点以及常考点线程安全问题

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

Redis高可用主从复制与哨兵模式

前言 在生产环境中&#xff0c;除了采用持久化方式实现 Redis 的高可用性&#xff0c;还可以采用主从复制、哨兵模式和 Cluster 集群的方法确保数据的持久性和可靠性。 目录 一、主从复制 1. 概述 2. 作用 3. 主从复制流程 4. 部署 4.1 安装 redis 4.2 编辑 master 节…

物联网实战--入门篇之(七)嵌入式-MQTT

目录 一、MQTT简介 二、MQTT使用方法 三、MQTT驱动设计 四、代码解析 五、使用过程 六、总结 一、MQTT简介 MQTT因为其轻量、高效和稳定的特点&#xff0c;特别适合作为物联网系统的数据传输协议&#xff0c;已经成为物联网事实上的通信标准了。关于协议的具体内容看看这…

后端前行Vue之路(三):计算属性和监视属性

1.概述 书接上回&#xff0c;我们讲述了《后端前行Vue之路(二)&#xff1a;模版语法之插值与指令》谈到了Vue的模板语法很强大&#xff0c;支持复杂表达式&#xff0c;如下&#xff1a; <div id"example">{{ message.split().reverse().join() }} </div&g…

Supervised Fine-tuning in turn Improves Visual Foundation Models

简介 从NLP中的监督微调&#xff08;Supervised Fine-tuning&#xff09;获得的灵感&#xff0c;本文探索了细粒度SFT在预训练后增强视觉基础模型潜力。本文提出了一种二阶段方法ViSFT释放视觉基础模型细粒度知识。具体地&#xff0c;通过一些域内任务执行视觉联合学习增强视觉…

编程实战:自己编写HTTP服务器(系列9:上传文件)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 本系列的源码位于httpd目录下…

Java实现两数相除

题意 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求不使用乘法、除法和取余运算。 整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。例如&#xff0c;8.345 将被截断为 8 &#xff0c;-2.7335…

用DasViewer浏览模型时可以移动模型的中心点吗?

按住鼠标中键&#xff0c;就正常平移模型了。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。 DasViewer下载地址&#xff1a;…

leetcode 热题 100(部分)C/C++

leetcode 热题 100 双指针 盛最多水的容器 【mid】【双指针】 思路&#xff1a; 好久没写代码sb了&#xff0c;加上之前写的双指针并不多&#xff0c;以及有点思维定势了。我对双指针比较刻板的印象一直是两层for循环i&#xff0c;j&#xff0c;初始时i,j都位于左界附近&…