gpt4 book ai didi

javascript - Node.js - 在另一个线程中暂停脚本执行

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:58 25 4
gpt4 key购买 nike

.:免责声明:.

请注意,我正在尝试使用 node.js 实现一些可能违背其设计原则的东西。然而,由于 node.js 违背了“javascript 用于客户端”的规范,我在这里也尝试了一些不同的东西。请多多包涵。

.:背景:.

我有一个要求,其中 Java 脚本需要叙述(从头到尾阅读),以便为简单的用户提供简单的脚本。我还将为更高级的用户提供异步脚本功能。

我了解 node.js 的事件驱动方法,并且有一个基于异步回调的解决方案。现在,我正在尝试简化它以满足我们更基本的脚本要求。

.:问题:.

有没有一种方法可以运行脚本(使用它自己的沙箱),在交付结果时可以暂停执行。

例如

var util = require('util'),
vm = require('vm'),
user = require('user');

vm.runInThisContext('user.WaitForProceed(); console.log('Waiting over');');

console.log('Finished!');

User 是我自己的模块,它将进行等待。基本上我希望它坐在那里并阻塞在 vm 对象的那一行,直到它收到返回的结果。之后它将继续到 console.log 行。

这个例子的输出并不重要,因为它也可以通过回调实现。示例脚本的叙述性质对于此解决方案更为重要。

  • J

最佳答案

在 Node.js 中没有办法暂停执行。至少他们是这么告诉我们的:)

有一些库支持高级流控制,比如 Invoke ,也许这会有所帮助,但我知道,这不是您要的:)

您还可以使用 nextTick() 实现忙循环

或者您可以在 C(++) 中实现阻塞调用并将其作为库提供。我从来没有这样做过。

最后一种方法是 readFileSync()到在 certian 事件上关闭的命名管道。

正如您已经提到的,这违反了语言原则,因此这些解决方案都是 hacky。

关于javascript - Node.js - 在另一个线程中暂停脚本执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com