我尝试使用edge.js和Visual Studio进行以下操作:
class Program
{
public static async void Start()
{
var data = 9;
var func = Edge.Func(File.ReadAllText("do_some_math.js"));
Console.WriteLine(await func(data));
}
static void Main(string[] args)
{
Task.Run((Action)Start).Wait();
}
}
do_some_math.js:
return function (data, callback) {
var math = require('mathjs');
// console.log("result: " + math.sqrt(data)); // works
callback(null, "result: " + math.sqrt(data));
}
使用回调时无法获得结果,而mathjs在使用console.log时可以正常工作。似乎回调在require之后不起作用(' mathjs')。我也尝试过其他模块。这里有什么问题?
答案 0 :(得分:1)
非常感谢edge.js,他们提供了答案。我想这应该是关于C#的问题。他们回答说:
您没有得到结果的原因是.NET应用程序在Node.js代码有机会完成之前退出。您可以通过将System.Threading.Sleep(5000);
作为Main中的最后一个语句来验证它。
正确解决它(即没有睡眠)的方法是将Start
的签名修改为
public static async Task Start()
然后在Main调用它:
Start().Wait();