You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nim语言(C后端)中延迟执行proc?

Nim中类似JavaScript setTimeout的异步延迟实现

对于有JavaScript开发经验的你,在基于C后端的Nim中实现等效setTimeout的异步延迟执行,主要依赖标准库的asyncdispatch模块,有两种常见写法:

1. 异步协程范式写法(推荐)

这种方式贴合Nim异步编程的主流风格,类似JS中async/await的用法:

import asyncdispatch

proc main() {.async.} =
  await sleepAsync(1000)  # 延迟1000毫秒,对应JS setTimeout的时间参数
  echo "Potato"

waitFor main()  # 启动并等待异步协程执行完成

核心说明:

  • 带{.async.}标记的proc是Nim的异步协程,等价于JS的async函数
  • sleepAsync(ms)是异步延迟函数,只会暂停当前协程,不会阻塞整个进程
  • waitFor用于触发异步协程并等待其执行完毕,避免程序提前退出

2. 回调式写法(贴近JS setTimeout风格)

如果习惯JS直接传回调的写法,可以用callLater函数:

import asyncdispatch

callLater(1000):
  echo "Potato"

runForever()  # 启动并维持事件循环,否则程序会立即退出

核心说明:

  • callLater(delayMs, callback)直接接受延迟时间和执行代码块,和setTimeout写法高度一致
  • 必须调用runForever()显式维持事件循环——这和JS在浏览器/Node环境自动维持事件循环的行为不同,Nim需要手动启动并保持事件循环运行,才能让延迟回调生效

内容的提问来源于stack exchange,提问作者Philipp Doerner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:17:02