。:免責聲明: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