在node.js中编写while循环

时间:2015-08-17 05:29:17

标签: javascript node.js asynchronous

在c#中我会这样做 -

double progress = 0;
while (progress < 100) 
{ 
    var result = await PerformAsync(); 
    progress = result.Progress; 
    await Task.Delay(); 
} 

简单的7行代码。 node.js中的等价物是什么? 基本上需要一个检查条件的while循环,直到满足该条件,睡眠然后执行一些异步操作。

4 个答案:

答案 0 :(得分:2)

当你以node.js的方式思考时,有一个基本的范式转换。

正如已经写过并在节点&#34;一切都是并行的,除了你的代码&#34; 。 JS是单线程的,因此如果你让线程休眠,一切都会阻塞。

但是如果你以自然的方式对问题进行建模,那么设计一个asysnc操作会花费时间来运行,当它完成时让它通知你。而不是等待它完成。

您可以设计asysnc(performAsysnc)操作来发出事件,然后提供在该事件发生时执行的回调。

因此它更加紧凑和自然。您的代码可能看起来像

performAsysnc().on('result',function cb () {// do what pleases you});

答案 1 :(得分:1)

一般来说,当您对表格有疑问时

  

&#34;我可以用语言A做一件事;如何使用语言B?&#34;

检查hyperpolyglot。它是一个页面,提供跨不同语言类别的某些术语和概念的摘要。

scripting页面向您展示了如何在JS,Python,Ruby和PHP中使用while loop

答案 2 :(得分:0)

Node.js,你猜,它是一个javascript文件。所以你可以使用javascript代码。但是你应该使用什么有一些不同。在exmaple;使用Node.js,您可以使用sync while;

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()函数,所以不是在技术上,而是在实际上我们使用循环。

异步示例:async for loop in node.js

答案 3 :(得分:0)

查看https://github.com/caolan/async,其中包含许多此类同步任务的方法。