问答 百科手机端

Nodejs应用-利用Promise做一个类似单片机的Delay延时器功能

2022-01-29 12:19

在单片机中, 执行程序中常会用到一个Delay的概念

所起的作用就是让程序停一小会,从秒到毫秒甚至微秒的延时, 在做驱动程序时,实现时序上起到很重要的作用

比如Arduino中常使用的就是delay(ms)函数

在Nodejs中, 大家肯定说相应的就是setTimeout, 它虽然能延迟执行, 但使用起来跟delay还是有那么一点不一样的

先来看看执行效果

这是一个循环输出,每输出1次等待1秒钟

代码实现

先利用Promise做个Delay功能的方法

let wait = ms => new Promise(resolve => setTimeout(resolve, ms));它借助setTimeout,在指定时间后resolve出Promise的结果, 以达成延迟"回调"的效果

相当于给出承诺(Promise)后, 在指定的时间后执行结果

具体如何使用呢:

(async ()=>{ console.log("start"); await wait(1000); //延迟1秒 console.log("that is after 1s");)()这样, 在输出"start"后, 系统会等待1秒, 再输出"that is after 1s"

下面给出本文开头的完整样例代码

let delayms = 1000; //ms延迟时长, 单位:毫秒let wait = ms => new Promise(resolve => setTimeout(resolve, ms));console.time("delay-time"); //记录程序开始时间(async ()=>{ for (let i = 0; i < 10; i++) { await wait(delayms); //让程序等一小会 console.log("...", i); //输出调试信息 } console.log("...done"); console.timeEnd("delay-time"); //计算并输出程序运行所消耗的总时间})();你问我这个有什么用?

会用的自然知道怎么用, 用在哪[憨笑]

运行环境:

node -vv14.17.0这期就酱紫[做鬼脸]

复杂的问题简单化

每次只关注一个知识点

对技术有兴趣的小伙伴可以关注我, 我会经常分享各种奇奇怪怪又实用的技术知识

热门