async.series:等待客户端连接

时间:2016-05-16 15:01:07

标签: node.js asynchronous

我已经阅读了异步文档,但我对(node)js很新,我不确定正确的方法。

我有一台服务器:

var client;
var connected = false;

var server = net.createServer(function(socket) {
    socket.setEncoding("utf8");
    client = socket;

    connected = true;
    console.log("Connected");

    socket.on('data', function(data) {
        // do something
    });

    socket.on("close", function() {
        console.log("close");
    });
});

然后我有一个异步系列。我想等到客户端连接(即connected == true)。

async.series([
    function one(next_step) {
        // do something
        next_step(null);
    }, 

    // wait for connected
    function wait_for_client(next_step) {
        async.until(
            function () { return connected == true; },
            function (cb) { setTimeout(cb, 10); }, 
            function (err) { console.log("exit"); next_step(null); }
        );
    },

    function three(next_step) {
        // do something
        next_step(null);
    },

    // 
}

我不确定如何在第二步中“等待”,直到连接发生变化。 一段时间循环会阻止进程或异步处理它吗?

在async.series中等待外部事件的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试使用async.until(test,fn,callback)。 来自文档:

  

直到(test,fn,callback)

     

反复调用fn直到test返回true。在何时调用回调   停止,或发生错误。回调将传递一个错误和任何   参数传递给最终fn的回调。

  • 您的测试将连接== true。
  • Fn可以重试 如果您的服务器具有此功能,请连接。
  • 然后你可以打电话给 系列的内部回调直到回调。