我有一个node.js webserver,它应该执行一个javascript-String,它在运行时以低延迟传递。我基本上是在寻找以下java代码的node.js版本:
PFUser.currentUser()?.setValue("newLocation", forKey: valueForKey("personalObjKey")?.objectForKey("location") as! String)
输出:
import com.eclipsesource.v8.V8;
public class MainC {
private static V8 v8;
private static int result;
public static void main(String[] args) {
long time0 = System.nanoTime();
createRuntime();
long time1 = System.nanoTime();
String script = "x(0,10000); "
+ "function x(y,z) { "
+ " if (z>0) {"
+ " return x(y+1,z-1); "
+ " } else {"
+ " return y;"
+ " } "
+ "}"
+ "";
simulateHTTPRequestAndExucuteScript(script);
long time2 = System.nanoTime();
System.out.println("Result: " + result);
System.out.println("Time for 'createRuntime()' : " + ((time1-time0)/1000000.0) + " ms");
System.out.println("Time for 'executeIntScript()' : " + ((time2-time1)/1000000.0) + " ms");
}
private static void createRuntime() {
v8 = V8.createV8Runtime();
}
private static void simulateHTTPRequestAndExucuteScript(String s) {
result = v8.executeIntScript(s);
}
}
运行时创建和脚本执行是两个独立的任务。注意,10000个递归调用的实际执行时间是< 1毫秒。初始化运行时的相当长的时间并不重要,因为这可以在传递字符串之前完成。
如何使用nodes.js完成V8运行时创建和低延迟javascript代码注入?
答案 0 :(得分:0)
eh .... node.js是一个v8运行时包装器。 您不需要使用node.js创建,注入等 阅读关于页面的基本nodejs:https://nodejs.org/en/about/ 基本上你编写javascript,通过node.js运行它(这也是v8,其中包含js代码的额外c ++库)就是这样。
在你的情况下,你通过nodejs运行的主js文件将执行你拥有的js代码(该函数(x)....)并调用它你想要多少次。
运行js文件只需执行“node my-jsfile.js”
这就是全部。
答案 1 :(得分:0)
您是否尝试过vm module nodejs?
var vm = require('vm');
var script = "result = x(0,10000); "
+ "function x(y,z) { "
+ " if (z>0) {"
+ " return x(y+1,z-1); "
+ " } else {"
+ " return y;"
+ " } "
+ "}"
+ "";
var context = {result: null};
vm.createContext(context);
vm.runInContext(script, context);
console.log(context.result);