edge.js使用节点模块

时间:2016-02-23 17:38:10

标签: node.js edge.js

我尝试使用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')。我也尝试过其他模块。这里有什么问题?

1 个答案:

答案 0 :(得分:1)

非常感谢edge.js,他们提供了答案。我想这应该是关于C#的问题。他们回答说:

您没有得到结果的原因是.NET应用程序在Node.js代码有机会完成之前退出。您可以通过将System.Threading.Sleep(5000);作为Main中的最后一个语句来验证它。

正确解决它(即没有睡眠)的方法是将Start的签名修改为

public static async Task Start()

然后在Main调用它:

Start().Wait();