Nodejs-HardCore: 定时器与异步执行详解之事件循环核心技巧

node.js:setTimeout实现同步delay延时函数 代码】node.js:setTimeout实现同步delay延时函数。 阅读详情

使用 timer 延迟执行

在Node.js中,定时器是实现异步操作和延时执行的核心机制
合理使用定时器API可以优化性能、避免阻塞事件循环,并创建高效的异步接口

1 ) 通过 setTimeout 延迟执行函数

解决方案: setTimeout 与 Function.prototype.bind

setTimeout()允许我们延迟执行函数,同时结合Function.prototype.bind()可以解决上下文丢失问题

// 使用 setTimeout 实现延迟执行 
function delayedGreeting(name) {
  console.log(`Hello, ${name}!`);
}

// 2秒后执行
setTimeout(delayedGreeting, 2000, "Alice"); // Alice

// 使用 bind 解决上下文问题
const user = {
  name: "Bob",
  greet: function() {
    console.log(`Hello, ${this.name}!`);
  }
};
 
// 正确保留上下文
setTimeout(user.greet.bind(user), 3000); // Bob

使用 clearTimeout 取消定时器

当需要中止尚未执行的延时函数时,可以使用 clearTimeout()

// 创建延时任务 
const timeoutId = setTimeout(() => {
  console.log("这段文字不会显示");
}, 5000);
 
// 在2秒后取消执行 
setTimeout(() => {
  clearTimeout(timeoutId);
  console.log("定时任务已取消");
}, 2000);

2 ) 通过定时器定时调用回调函数

解决方案:setInterval 与 clearInterval

setInterval()用于周期性执行函数,配合 clearInterval()实现精确控制

// 每秒打印一次计数 
let count = 0;
const intervalId = setInterval(() => {
  count++;
  console.log(`计数: ${count}`);
  
  if (count >= 5) {
    clearInterval(intervalId);
    console.log("定时器已停止");
  }
}, 1000);

使用 setTimeout 实现更精确的定时循环
setInterval存在定时漂移问题,使用递归setTimeout可实现更精确的定时

// 递归setTimeout实现精确计时
function recursiveTimer(count = 0) {
  console.log(精确计数: ${count});
  
  if (count < 5) {
    setTimeout(() => recursiveTimer(count + 1), 1000);
  }
}
 
recursiveTimer();

长期运行的定时器示例

// 创建一个持续运行直到程序退出的定时器 
const longRunningTimer = setInterval(() => {
  console.log(`服务运行中 ${new Date().toLocaleTimeString()}`);
}, 5000);
 
// 捕获退出信号清理资源 
process.on('SIGINT', () => {
  clearInterval(longRunningTimer);
  console.log('\n收到退出信号,清理定时器');
  process.exit(0);
});
 
console.log('服务已启动,按Ctrl+C退出');

3 ) 安全的操作异步接口

解决方案:使用 process.nextTick

process.nextTick() 将回调放入事件循环的下一个阶段立即执行,确保API的完全异步行为

// 错误示例:同步触发事件
class UnsafeEventEmitter {
  constructor() {
    this.listeners = [];
  }
  
  on(listener) {
    this.listeners.push(listener);
  }
  
  emit(data) {
    this.listeners.forEach(listener => listener(data));
  }
}
 
// 使用process.nextTick确保异步行为 
class SafeEventEmitter {
  constructor() {
    this.listeners = [];
  }
  
  on(listener) {
    this.listeners.push(listener);
  }
  
  emit(data) {
    process.nextTick(() => {
      this.listeners.forEach(listener => listener(data));
    });
  }
}

创建始终异步的API

利用process.nextTick()确保API的异步特性不会意外被阻塞

function asyncApi(data, callback) {
  // 模拟异步处理 
  process.nextTick(() => {
    try {
      // 数据处理逻辑 
      const result = data.toUpperCase();
      callback(null, result);
    } catch (err) {
      callback(err);
    }
  });
}

// 使用API 
asyncApi("hello", (err, result) => {
  if (err) return console.error(err);
  console.log("处理结果:", result); // 输出: 处理结果: HELLO 
});

事件循环中的时序优先级

console.log("开始");
 
setImmediate(() => console.log("setImmediate 回调"));
setTimeout(() => console.log("setTimeout 回调"), 0);
process.nextTick(() => console.log("nextTick 回调"));
 
console.log("结束");

/* 输出顺序:
开始 
结束 
nextTick 回调
setTimeout 回调 
setImmediate 回调 
*/

再来看一个示例

// 演示事件循环中的执行顺序
setImmediate(() => console.log('setImmediate回调'));
setTimeout(() => console.log('setTimeout回调'), 0);
Promise.resolve().then(() => console.log('Promise微任务'));
process.nextTick(() => console.log('nextTick回调'));
 
console.log('主线程结束');
 
/* 典型输出顺序:
主线程结束 
nextTick回调 
Promise微任务 
setTimeout回调 
setImmediate回调
*/

事件循环深度解析


事件循环中的 nextTick 时序安排
process.nextTick 在所有阶段完成后立即执行,优先级高于常规异步操作:

通过下面的示例来看

// nextTick执行顺序演示 
setImmediate(() => console.log('setImmediate'));
setTimeout(() => console.log('setTimeout'), 0);
process.nextTick(() => console.log('nextTick'));
Promise.resolve().then(() => console.log('promise'));
 
/* 输出顺序:
nextTick
promise 
setTimeout
setImmediate
*/

事件循环迭代阶段详解

  1. 定时器阶段:执行setTimeout和setInterval到期回调

    setTimeout(() => console.log('Timeout 1'), 0);
    setImmediate(() => console.log('Immediate 1'));
    
  2. 挂起的I/O回调:执行系统操作回调(文件、网络等)

    const fs = require('fs');
    fs.readFile(filename, () => {
      console.log('File read complete');
      setImmediate(() => console.log('Immediate inside I/O'));
    });
    
  3. 闲置/准备阶段:Node内部使用的阶段

  4. 轮询阶段:
    处理新I/O事件
    执行与I/O相关的回调

  5. 检查阶段:执行setImmediate回调

    setImmediate(() => {
      console.log('Executed in check phase');
    });
    
  6. 关闭事件回调:执行关闭事件的回调(如socket.on('close'))

    const server = require('net').createServer();
    server.on('connection', socket => {
      socket.on('close', () => {
        console.log('Socket closed');
      });
    });
    

关键时序控制技术对比

方法执行阶段优先级使用场景
process.nextTick各阶段之间最高API异步化、微任务
Promise.resolve各阶段之间高异步流程控制
setTimeout定时器阶段中常规延迟任务
setImmediate检查阶段中低替代process.nextTick避免阻塞
setInterval定时器阶段中周期性任务

性能优化实践建议

  1. 避免nextTick递归:可能导致I/O饥饿

    // 危险:递归nextTick阻塞I/O
    function recursiveNextTick() {
      process.nextTick(recursiveNextTick);
    }
    // 改用setImmediate允许事件循环继续 
    
  2. 定时器精度控制:使用setTimeout递归替代setInterval

    function preciseInterval(fn, interval) {
      let running = true;
      
      const execute = () => {
        if (!running) return;
        fn();
        if (running) setTimeout(execute, interval);
      };
      
      setTimeout(execute, interval);
      return () => { running = false; };
    }
    
  3. 错误处理最佳实践:

    // 在异步边界捕获错误
    process.nextTick(() => {
      try {
        potentiallyFailingOperation();
      } catch (err) {
        console.error('Async error caught:', err);
      }
    });
    

最佳实践


Node.js中的异步操作管理需要深入理解事件循环机制。关键要点总结:

  1. setTimeout/setInterval:
    适合延迟任务和周期性执行
    使用clearTimeout/clearInterval管理资源
    注意回调函数的上下文绑定(使用bind)

  2. process.nextTick:
    当前操作结束后立即执行
    优先级高于其他异步操作
    确保API的异步一致性
    避免递归调用导致事件循环饥饿

  3. 事件循环顺序:
    nextTick队列 > Promise微任务 > 定时器 > I/O > setImmediate
    合理分配任务类型避免阻塞
    长时间任务应分解或使用 Worker Threads

示例

// 综合最佳实践示例 
function asyncOperation(data, callback) {
  // 确保回调始终异步 
  process.nextTick(() => {
    try {
      // 模拟长时间操作 
      setTimeout(() => {
        const result = 处理结果: ${data};
        callback(null, result);
      }, 100);
    } catch (err) {
      callback(err);
    }
  });
}
 
// 调用示例 
asyncOperation('最佳实践', (err, res) => {
  console.log(err || res);
});

通过掌握这些定时器和异步操作技术,您可以构建出更高效、更可靠的Node.js应用程序。牢记异步一致性原则,合理使用process.nextTick确保API行为可预测,同时在需要精确时间控制时选择setTimeout和setInterval

事件循环机制概述


1 ) nextTick 时序安排

process.nextTick() 拥有最高优先级,在当前操作完成后、事件循环继续前执行所有nextTick回调

2 ) 事件循环迭代流程

执行到期的 setTimeout/setInterval

是

否

事件循环开始

检查定时器

处理等待的I/O事件

执行setImmediate回调

处理close事件

还有待处理事件?

事件循环结束

或参考如下

是

否

是

否

开始事件循环

检查定时器

定时器到期?

执行定时器回调

处理待处理的I/O事件

执行setImmediate回调

处理close事件

队列中是否有任务?

处理nextTick队列

处理Promise微任务

进入下一阶段

事件循环结束

再来看下面

是

否

是

否

是

否

是

否

是

否

开始事件循环

检查定时器队列

定时器到期?

执行定时器回调

检查I/O队列

有I/O回调?

执行I/O回调

检查setImmediate队列

有setImmediate回调?

执行setImmediate回调

检查close事件队列

有close回调?

执行close回调

检查nextTick队列

有nextTick回调?

执行所有nextTick回调

循环结束

  1. 定时器阶段:执行setTimeout()和setInterval()到期的回调
  2. I/O事件阶段:执行系统操作相关的回调(文件、网络等)
  3. 轮询阶段:检索新的I/O事件,执行相关回调
  4. 检查阶段:执行setImmediate()回调
  5. 关闭回调阶段:处理关闭事件的回调(如socket.on('close'))

process.nextTick() 在事件循环的每个阶段之间执行,具有最高优先级

关键要点总结


1 ) 定时器选择:

  • 延迟执行:setTimeout()
  • 周期执行:setInterval() 或递归 setTimeout
  • 立即异步执行:process.nextTick()
  • 下一轮循环:setImmediate()

2 ) 异步API设计:

  • 始终使用process.nextTick()确保API的异步特性
  • 避免在事件触发器中同步调用监听器
  • 错误处理应遵循Node.js回调模式(error-first)

3 ) 性能注意事项:

  • 避免在 nextTick 中进行CPU密集型操作
  • 长的 nextTick 队列会阻塞事件循环
  • 复杂操作使用 setImmediate() 让出控制权

掌握这些定时器和异步操作技巧将使您能够构建高效、可靠的Node.js应用程序,充分利用事件驱动架构的优势

最新推荐-2026年固态电池+锂电正极+硅基负极等关键技术实践PPT合集(55份).zip 2026年最新固态电池+锂电正极+硅基负极等关键技术实践PPT合集,共55份。供大家查阅。 一、固态电池 1.全固态电池用硅基负极材料研究进展 2.全固态电池硅基负极的开发思考 3.功能型固态电解质设计及界面调控 4.固态电池及关键材料研发与产业化进展 5.固态电池的产业化应用探索 6.固态锂电池开发现状及未来展望 7.固态锂离子电池正极结构设计与材料选择 8.固态锂金属电池设计与应用 9.硫化物全固态电池石墨和硅负极性能调控技术 10.硫化物固态电解质行业应用 11.聚合物基固态电解质与固态电池的关键技术 12.蜂鸟声共振技术-固态电池产业化的革命性创新 13.长安汽车固态电池应用探索 14.高安全性固态电池技术发展趋势 15.高性能硫化物全固态锂电池解决方案 16.高硅体系的膨胀解决方案 二、硅基负极 1.化学气相沉积碳包覆技术在硅基负极材料中的应用 2.新型粘结剂解决 硅基负极膨胀问题 3.氧化亚硅负极材料化学预锂化与界面设计 4.流化床法生产磷酸铁锂及硅负极材料研究 5.石墨烯包覆硅碳负极 6.硅基材料的发展现状及展望 7.硅基负极与固态电解质 8.硅基负极技术与进展 9.硅基负极材料体积膨胀解决策略 10.硅基负极材料及其结构设计 11.硅基负极材料的冶金法制备 12.硅基负极材料的发展与应用 13.硅基负极材料研究进展 14.硅基负极材料:从基础研究到产业应用 15.硅基负极析锂行为及调制研究 16.硅碳负极低成本制造技术报告 17.硅碳负极制备用多孔碳的开发 18.硅碳负极挑战和进展 19.硅碳负极新路线及关键材料制备 20.硅碳负极锂离子电池应力特性研究 21.锂电石墨负极材料工程化技术进步 22.锂离子电池负极材料 23.高容量石墨烯-硅基复合负极材料的研究进展 三、锂电正极 1.基于AI和图论结构化学的锂电池的材料基因探索 2.废旧磷酸铁锂电池梯次及再生利用进展 3.电动汽车大功率充电标准体系与检测认证实践 4.磷酸铁及磷酸铁锂异物防控管理 5.磷酸铁锂正极材料:液相法合成及产业化应用研究 6.磷酸锰铁锂正极材料的研究现状 7.车用动力电池安全标准化工作进展及未来展望 8.锂电层状氧化物正极材料的原子尺度失效机制 9.锂电正极材料工厂异物防控管理图册 10.锂离子电池高熵正极材料成分设计及储锂机制研究 11.高压实磷酸铁锂正极材料生产工艺配方.docx 12.高安全正极材料添加剂提升三元锂电安全性 13.高比能富锂锰基电池关键技术 14.高能量密度锂离子电池正极材料及应用研究 15.高镍单晶三元正极材料研究 16.三元高电压单晶正极材料 立即下载

相关推荐

Zotero 是学术管理领域非常优秀的软件 它功能成熟、生态稳定,帮助许多科研人员建立了最初的文献归档体系

Zotero 是学术管理领域非常优秀的软件。它功能成熟、生态稳定,帮助许多科研人员建立了最初的文献归档体系。但在当下日常科研与深度使用各类 Agent 时,传统的文献工具链暴露出一些断点:上下文严重分散:论文存储在 Zotero,笔记记在 Obsidian,与模型的推导和分析留在各个网页对话框中。三者数据彼此隔离,当需要 Agent 结合某篇具体论文与历史笔记进行深入推导时,用户必须反复手动复制粘贴。文献格式对模型不友好:人类习惯阅读排版良好的 PDF 文件;但对于模型而言,直接解析双栏排版、跨页表格、复杂数学公式和交叉引用的成本极高,极易产生识别错误与幻觉。结构化 Markdown 与 LaTeX 才是模型容易准确理解的格式。维护成本较高:AI 伴读、全文翻译、笔记同步等高频需求,往往需要安装和调试多个社区插件,配置门槛高且在版本升级时容易出现兼容性问题。批量自动化能力有限:通过 Deep Research 或自动化检索工具发现的大量文献,目前仍需人工在浏览器中逐篇点击保存,难以顺畅衔接批量研究流。Agentero 并非旨在替代 Zotero,而是探索一种人与 Agent 协同处理科研上下文的新方式:人类负责:提出研究问题、进行学术价值判断、深度研读与核心结论推导;Agent 负责:批量检索筛选、元数据抓取、图表与公式提取、引用关系梳理及基础总结。

利用Node.js延时执行脚本

利用Node.js延时执行脚本 本文代码的目的是为了延时执行linux脚本 setTimeout(()=>{ var spawn = require('child_process').spawn; free = spawn('./go.sh'); // 捕获标准输出并将其打印到控制台 free.stdout.on('data', function (data) { console.log('standard output:\n' + data);

有关我的科研的足迹、算法竞赛的日子、生活记录。 1431

基于 .net 8、blazor 、furion 开发的后台管理系统,功能全(完善的用户权限管理、定时任务、附件管理、日志审计、物联网、企业门户等)、技术新

基于 .net 7开发的后台管理系统,系统前后台分离,api 是基于Furion 框架开发,前端是基于ant-design-blazor开发,系统使用技术或框架较新

Node.js 中如何实现延迟和超时 ?

Node.js 是一个功能强大的 JavaScript 运行时,它提供了几种通过延迟和超时来控制执行流的方法。本指南将引导你完成在 Node.js 中实现延迟和超时的要点,确保你的应用程序平稳高效地运行。

xiaochong0302的博客 1462

材料科学基于电致塑性效应的多场耦合精密成形:难变形合金超薄带材低缺陷轧制工艺

内容概要:本文系统阐述了合金在电、热、力多场耦合作用下的电致塑性精密成形工艺(Electrically-Assisted Rolling, EAR),重点介绍其通过瞬时脉冲电流实现材料“成形时软、用时强”的核心技术原理。该工艺利用电子风力、焦耳热微区软化等非热与热效应协同作用,降低难变形合金的流动应力,提升单道次压下率(如SUS304由33.8%提升至41.5%),显著减少中间退火次数,实现数十微米级极薄带材的高效、低残余应力、高平整度轧制。文章详细分析了工艺参数(电流密度、频率、脉宽、温度窗口等)、装备配置(脉冲电源、绝缘辊系、在线检测)及失效模式控制,并强调需以“变形区有效电流密度”和“窄温区闭环控制”为核心进行工艺设计与优化。; 适合人群:从事金属材料加工、精密轧制、先进成形技术研发的科研人员与工程技术人员,具备材料科学与工程、机械制造或相关领域背景的研发工程师及研究生。; 使用场景及目标:①开发高强钛合金、不锈钢、特种合金等难变形金属的超薄精密箔材(如折叠屏基材、光刻机钢带);②优化现有冷轧工艺,降低能耗与退火次数,提升产品尺寸精度与表面质量;③研究电-热-力多场耦合成形机理,指导新型电辅助制造装备开发。; 阅读建议:本文兼具理论深度与工程实践指导意义,建议结合图表与实测数据理解多机制协同效应,重点关注电流回路设计、温度场闭环控制与参数标定方法,避免直接套用文献参数;在应用中应坚持“实验标定+仿真验证”原则,确保工艺安全性与可重复性。

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4572

Node.js实战6:定时器,使用timer延迟执行。

setTimeout 在nodejs中,通过setTimeout函数可以达到延迟执行的效果,这个函数也常被称为定时器。 一个简单的例子: console.log( (new Date()).getSeconds() ); setTimeout(function(){ console.log( (new Date()).getSeconds() ); console.log("...

w2sft的博客 5199

别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码)

本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。

weixin_42523711的博客 271

nodejs+rabbitmq实现任务延迟执行与重试控制

以发送邮件任务为例,第一次发送邮件失败后,延时30s后继续发送此邮件,如果如此重试3次后仍然失败,则停止发送。 send_email: 发送邮件任务队列(死信队列) send_email_retry: 发送邮件任务重试队列 send_email_fail: 发送邮件任务失败队列 生产者 创建send_email队列,并给队列绑定交换机exchange和路由routingkey await ch.assertQueue(queue_send_email, { durable:.

没事学点AI小知识 1150

多模态论文笔记——BLIP

本文详细介绍这几年AIGC火爆的隐藏功臣,多模态模型:BLIP。

haopinglianlian的博客 2454

【AI智能体】Dify 搭建个人专属简历美化助手操作详解

Dify 搭建个人专属简历诊断助手实战操作详解

congge 4384

NodeJS官方文档中文版之《Node.js中的定时器》

Node.js中的定时器原文地址: https://nodejs.org/en/docs/guides/timers-in-node/Node.js的定时器模块中含有这样的方法, 它们可以设定在指定时间之后执行某些代码. 定时器函数不需要通过 require() 导入, 它们是全局可访问的, 这是为了和浏览器中的JavaScript API保持一致. 为了彻底理解定时器回调何时被执行, 最好先仔细研

OrangeJ 3591

V-Mamba:2D 选择性扫描状态空间模型图像分类

V-Mamba CIFAR-10 分类链路:32² RGB → Stem Conv (3→64ch, stride2→16²) → VMambaBlock ×4 (SS2D 四方向 → Mamba S6 扫描 → MLP) → GAP → Linear → 10 类。核心贡献:SS2D 四方向扫描将 2D 空间建模转为 4 个 1D 序列, 计算复杂度从 O(N²) 降至 O(N)。建议先从 CIFAR-10 dim=64 depth=4 验证 SSM 收敛性;

FJN110的博客 70

Nodejs-HardCore: 入门指南之从核心特性到流式应用开发

Node.js核心特性与应用摘要 Node.js凭借其非阻塞I/O模型和事件驱动架构,成为高并发、I/O密集型应用的理想选择。核心优势包括: 高性能事件循环处理数千并发连接 异步I/O机制避免线程阻塞 统一JavaScript技术栈 丰富生态系统(npm超过200万包) 核心模块包含: EventEmitter - 事件驱动基础 Stream - 高效I/O处理 FS - 文件系统操作 网络模块 - 构建服务端/客户端 典型应用场景包括实时应用、微服务和数据处理。通过流式处理和异步编程模型,Node.js能

Wang的专栏 271

【STM32Cube_14】使用硬件I2C读写环境光强度传感器(BH1750)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设读取环境光强度传感器数据(BH1750)

Mculover666的博客(嵌入式) 7244

在Simulink中进行基于强化学习控制策略的三相逆变器仿真

本文详细介绍了在Simulink中实现基于强化学习控制策略的三相逆变器仿真的完整流程。主要内容包括:1)准备工作,确保MATLAB/Simulink及相关工具箱安装;2)构建三相逆变器基础模型,包含电源、全桥电路、LC滤波器和负载;3)重点阐述强化学习控制器设计,涉及状态空间、动作空间定义,奖励函数设计和算法选择;4)实现控制逻辑,包括环境创建、代理配置和训练过程;5)仿真设置与结果分析。文章强调了模型调试优化的重要性,并建议结合文献研究提升控制效果。该方案为开发自适应电力电子控制系统提供了实用指南。

amy_mhd的博客 272

Nodejs-HardCore: Buffer操作、Base64编码与zlib压缩实战

本文通过两个Node.js示例展示了二进制数据处理的核心技术。在data-uri.js中,演示了Buffer与Base64编码转换,图像文件经编码后体积增加33%,但通过zlib压缩可减少75%。network.js则展示了自定义二进制协议设计,利用位掩码实现数据分片存储,结合zlib压缩优化网络传输。关键点包括:Buffer操作、Base64编码原理、压缩算法选择(deflate/gzip)及位掩码技术的应用,这些技术在Web性能优化、网络协议设计等领域具有重要价值。

Wang的专栏 1255

15、 深入理解Akka微服务:创建与管理体育博彩平台

本博文深入探讨了如何使用Akka微服务架构为体育博彩平台创建投影和管理事件数据,包括市场投影、投注投影以及数据库投影的实现。同时,介绍了通过gRPC提供HTTP端点以供外部系统访问的方法,并详细说明了在本地环境和Kubernetes中运行应用程序的步骤及配置建议。

weixin_35756624的博客 97

Nodejs-HardCore: 深入解析DBF文件之二进制文件处理指南

本文深入解析了Node.js如何解析DBF二进制文件的技术实现。DBF文件由文件头、字段描述区和数据记录区三部分组成,采用Buffer对象处理二进制数据。关键步骤包括:读取文件头元数据(记录数、字节数等)、解析字段定义(名称、类型、长度)以及处理实际数据记录(删除标记检测、类型转换)。文章详细介绍了Buffer核心API(readUInt16LE、slice等)的使用方法,并提供了完整的代码示例,展示如何将DBF文件解析为包含元数据、字段定义和记录的JSON结构。该技术可应用于GIS系统和遗留数据库的数据处

Wang的专栏 990

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NodeJs实现定时任务的示例代码

NodeJs实现定时任务的示例代码 在项目中有个每天0点执行的函数,本来想用setInterval来实现,但觉得这种需求以后应该还会有,自己写可能拓展性不高。 搜了一下发现了node-schedule这个包。 现在记录一下使用方法 node-schedule没次都是通过新建一个scheduleJob对象来执行具体方法。 时间数值按下表表示 1 2 3 4...

秋天的博客 4224

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

js 延迟几秒执行_深入研究 Node.js 的回调队列

队列是 Node.js 中用于有效处理异步操作的一项重要技术。在本文中,我们将深入研究 Node.js 中的队列:它们是什么,它们如何工作(通过事件循环)以及它们的类型。Node.js 中的队列是什么?队列是 Node.js 中用于组织异步操作的数据结构。这些操作以不同的形式存在,包括HTTP请求、读取或写入文件操作、流等。在 Node.js 中处理异步操作非常具有挑战性。HTTP 请求期间可能会...

weixin_39630126的博客 356

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

nodejs中实现sleep功能,暂停几秒.

一 背景 在使用nodejs爬虫的时候,经常会遇到别人的网站对频率的反爬机制, 这个时候如果不做处理程序就会挂掉,重新启动也会继续被屏蔽.这个问题怎么解决呢, 我的想法就是程序暂停10分钟或者更长的时间,继续爬取. 二 方法 其实使用setTimeout就可以实现,只是nodejs异步已经很金字塔了,再加一层会更恐怖,所以 本文使用nodejs的第三方模块async来实现,asyn

意外金喜 11万+

nodejs8.0+中实现sleep功能,暂停几秒.

nodejs8.0+中实现sleep功能,暂停几秒.

意外金喜 3万+

Nodejs 定时执行(node-cron)

遇到个需求要定时清理某个map, 一个setInterval实现感觉太皮,肯定会翻车。所以去万能的npm上去摸工具。搜索一下schedule,出现一个node-cron模块。看起来有很多人用,嗯….就用这个了。 Npm 文档:https://www.npmjs.com/package/cron 1 安装 npm install cron 测试code: var CronJob = require...

Andy Tools 2万+

nodejs模块 node-schedule使用,定时任务

一. 安装 npm install node-schedule 二. 使用 例子通过定时访问url展示 1.确定的时间

意外金喜 6万+
上一篇: Nodejs-HardCore: 操作系统与命令行实用技巧详解
下一篇: Nodejs-HardCore: Buffer 深入解析之比特、字节与编码的艺术
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值