【发布时间】:2020-02-11 19:40:52
【问题描述】:
我只是对使用 javascript 或 typescript 进行异步工作感到好奇。
我用C# 做了一些程序,下面是我写的源代码。
static void Main(string[] args)
{
var t1= Task.Run(() => { myFunc(0, ConsoleColor.Green); });
var t2 = Task.Run(() => { myFunc(50000, ConsoleColor.Red); });
t1.Wait();
t2.Wait();
}
static void myFunc(int number, ConsoleColor color)
{
for (int i = 0; i < 1e4; i++)
{
Console.ForegroundColor = color;
Console.WriteLine(number + i);
}
}
我可以想象为什么控制台会写出上面的结果。
以下源代码是用打字稿编写的。我试图模拟相同的结果,但失败了。
let i: number;
let j: string;
let k: number;
let mx: number =1e4;
function myFunc(offset: number, color: string) {
return new Promise(() => {
for (i = 0; i < mx; i++) {
console.log(color, i + offset);
}
});
};
async function myFunc2() {
const aa = myFunc(0, "\x1b[32m");
const bb = myFunc(50000, "\x1b[35m");
await aa;
await bb;
}
myFunc2();
我能得到任何建议以在 `java(type)script 中使用 C# 生成相同的结果吗?我尝试了很多次实现,但很多次都失败了。
谢谢你的阅读。
【问题讨论】:
-
据我所知,JavaScript 是单线程的。您在 C# 中使用“Task.Run”所做的是在线程池线程上执行代码,而这在 JavaScript(也不是 TypeScript)中没有。在寻找可能建议解决方法的“多线程 javascript”时,您可能会得到一些结果。
标签: c# typescript asynchronous