在C#中,我会这样做 -
double progress = 0;
while (progress < 100)
{
var result = await PerformAsync();
progress = result.Progress;
await Task.Delay();
}
这是一段简洁的7行代码。 在node.js中如何实现相同的功能? 基本上需要一个while循环,检查条件,并在满足该条件之前等待一段时间,然后执行某些异步操作。
在C#中,我会这样做 -
double progress = 0;
while (progress < 100)
{
var result = await PerformAsync();
progress = result.Progress;
await Task.Delay();
}
这是一段简洁的7行代码。 在node.js中如何实现相同的功能? 基本上需要一个while循环,检查条件,并在满足该条件之前等待一段时间,然后执行某些异步操作。
当你用Node.js的方式思考时,会有一个基本的范式转变。
正如在Node中所说:“除了你的代码,一切都是并行运行的”。JS是单线程的,因此如果让该线程休眠,则所有操作都会被阻塞。
但是,如果您以自然的方式来设计问题,那么就应该设计一个异步操作,它需要花时间来运行,完成后通知您。而不是让您等待它完成。
因此,您可以设计异步(performAsync)操作来发出事件,然后提供回调函数,在事件发生时执行该回调函数。
因此,这种方法更加紧凑和自然。您的代码可能如下所示:
performAsync().on('result',function cb () {// do what pleases you});
请查看hyperpolyglot。这是一个提供各种语言类别下特定术语和概念摘要的页面。“我可以用语言A做某件事情,如何在语言B中做到相同的效果?”
while
循环等内容。Node.js,正如你所猜测的那样,它是一个JavaScript文件。因此,您可以使用JavaScript代码。但是有一些不同之处,关于您应该使用什么。例如;使用Node.js时,您可能想要使用同步方式;
var page = 2;
var last_page = 100;
(function loop() {
if (page <= last_page) {
request("/data?page=" + page, function (error, response, body) {
if (!error && response.statusCode == 200) {
store_data(body)
}
page++;
loop();
});
}
}());
在这个例子中,我们在loop()函数中调用loop()函数,因此从技术上讲我们并没有使用循环,但实际上我们是在使用循环。
异步示例:{{link1:在node.js中进行异步循环}}