首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nodejs上试用async.js

在nodejs上试用async.js
EN

Stack Overflow用户
提问于 2012-12-21 00:10:33
回答 1查看 170关注 0票数 0

我对下面的代码有一个问题:

代码语言:javascript
复制
var async = require("async");

function sleep(milliseconds) {
    var start = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds){
            break;
        }
    }
}

function hello(no){
    console.log(no);
    async.forEach(no,function print_list(x, callback){
        console.log("I am task number : ", x);
        var sleep_time = Math.floor((Math.random()*10)+1);
        console.log(sleep_time);
        sleep(sleep_time*1000);
    },function(err){if (err){console.log(err);}});
}

list = [];
for (var a = 1000; a > 0;a--){
    list.push(a);
};
hello(list);

在我看来,我希望每个this代码都不会相互阻塞,但我发现这仍然被视为同步代码。

我哪里做错了?

EN

回答 1

Stack Overflow用户

发布于 2012-12-21 00:17:33

Node.js是单线程的,您的睡眠功能正在接管CPU。

请尝试使用setTimeout,以获得一个更实际的示例来说明它是如何工作的。

代码语言:javascript
复制
function hello(no){
    console.log(no);
    async.forEach(no,function print_list(x, callback){
        console.log("I am task number : ", x);
        var sleep_time = Math.floor((Math.random()*10)+1);
        console.log(sleep_time);
        // use setTimeout
        setTimeout( function() {}, sleep_time*1000);
    },function(err){if (err){console.log(err);}});
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13976140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档