。:免责声明:Node.js - 在另一个线程中暂停脚本执行
请注意,我正在尝试用node.js来实现某些可能违背其设计原则的东西。然而,由于node.js违背了“JavaScript是为了客户端”的规范,我也在尝试不同的东西。请多多包涵。
。:背景:
我有一个要求,即对于简单的用户来说,简单的脚本需要叙述Java脚本(从头到尾)。我还将为更高级的用户提供异步脚本功能。
我了解node.js的事件驱动方法,并且有一个基于异步回调的解决方案。现在我正试图简化这些,以满足我们更基本的脚本要求。
。:问题:
有没有一种方法可以运行脚本(使用自己的沙箱),可以在执行结果被传递时暂停执行。
E.g.
var util = require('util'),
vm = require('vm'),
user = require('user');
vm.runInThisContext('user.WaitForProceed(); console.log('Waiting over');');
console.log('Finished!');
用户是我自己的模块,将会等待。基本上我希望它坐在那里并阻止vm对象中的那一行,直到它收到结果为止。之后它将继续到console.log行。
这个例子的输出不重要,因为它也可以通过回调来实现。示例脚本的叙述性质对于此解决方案更为重要。
- Ĵ
那么谁声称这就是所谓的NORM(!?)“javascript是为了客户端” - 还是说你(和其他人)只能在那里看到它,并宣称你/他们知道的唯一东西就是“规范”?无论如何,没有办法可以暂停。 JS机器继续运行事件循环,只有在没有任何运行的情况下才会停止。所以停下来的唯一方法是不要再有代码,也不要再有更多的事件(附带一个事件监听器)。你唯一能做的就是等待这个“继续”事件。 – 2012-03-05 07:39:10
...所以你必须有一个事件来听,由你的“用户”对象解雇。但是你说你已经有了这样一个解决方案,所以重要的是你要从这个JS引擎本身实际工作,然后你会对这个东西有更好的感觉:)你应该告诉我们更多关于什么user.WaitForProcceed()does;) – 2012-03-05 07:52:36
“...因此,重要的是你要从这个JS引擎本身实际工作...”规范是别人告诉我的东西“应该工作”。我了解节点的局限性和功能,但是与所有开发人员打交道的情况一样。但他们希望以他们的方式使用这个系统。我只是探索什么是可能的。 – Nevar 2012-03-06 22:05:11