0

我正在尝试使用 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));  

}

使用回调时我无法得到结果,而使用 console.log 时 mathjs 工作。似乎在 require('mathjs') 之后回调不起作用。我也尝试过其他模块。这里有什么问题?

4

1 回答 1

1

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

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

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

public static async Task Start()

然后在 Main 中调用它:

Start().Wait();
于 2016-02-24T19:25:10.667 回答