如何确保您使用Javascript正确关闭功能?

时间:2014-03-14 00:32:34

标签: javascript node.js

任何人都可以向我解释为什么我要处理50条记录,但我从未得到console.log("all records processed");到控制台。

这就像我关闭一个功能太快或太晚。使用回叫时最好的方法是什么,因为我确信这就是为什么我没有得到"all records processed"。我使用节点v0.10.26与NPM oracle插件。

var oracle = require('oracle');

var connectData = {
    hostname: "127.0.0.1",
    port: 1521,
    database: "xe", // System ID (SID)
    user: "user",
    password: "password"
};

oracle.connect(connectData, function(err, connection) {
    if (err) {
        console.log("Error connecting to db:", err);
        return;
    }
    connection.setPrefetchRowCount(50);
    var reader = connection.reader("SELECT * FROM CARS", []);
    function doRead(cb) {
        reader.nextRow(function(err, row) {
            if (err) return cb(err);
            if (row) {
                // do something with row
                console.log("got " + JSON.stringify(row));
                // recurse to read next record
                return doRead(cb)
            } else {
                // we are done
                return cb();
            }
        });
    }
    doRead(function(err) {
        if (err) throw err; // or log it
        console.log("all records processed");
    });
});

2 个答案:

答案 0 :(得分:0)

connectData的结束后,你没有分号会有什么不同吗?就我个人而言,我只是设置了越来越多的控制台日志,直到我弄清楚所有内容都搞乱了。那,或者如果可以的话,使用断点。

答案 1 :(得分:0)

对于这些逐步回调,我建议您使用async来管理回调金字塔。