繁体   English   中英

试图了解node.js回调方案

[英]trying to understand node.js callback scheme

function load_file_contents(path, callback) {
    fs.open(path, 'r', function (err, f) {
        if (err) {
            callback(err);
            return;
        } else if (!f) {
            callback(make_error("invalid_handle",
                "bad file handle from fs.open"));
            return;
        }
        fs.fstat(f, function (err, stats) {
            if (err) {
                callback(err);
                return;
            }
            if (stats.isFile()) {
                var b = new Buffer(10000);
                fs.read(f, b, 0, 10000, null, function (err, br, buf) {
                    if (err) {
                        callback(err);
                        return;
                    }

                    fs.close(f, function (err) {
                        if (err) {
                            callback(err);
                            return;
                        }
                        callback(null, b.toString('utf8', 0, br));
                    });
                });
            } else {
                calback(make_error("not_file", "Can't load directory"));
                return;
            }
        });
    });
}


load_file_contents(
    "test.txt",
    function (err, contents) {
        if (err)
            console.log(err);
        else
            console.log(contents);
    }
);

在这段代码中,我不太了解这个“ f”是从哪里来的? 在“ fs.open()”之后,有一行

" } else if (!f) {"

这是什么意思,这f从哪里来?

f是文件描述符,如果能够打开该文件,则传递给fs.open()的回调。

 else if (!f) {
     callback(make_error("invalid_handle",
         "bad file handle from fs.open"));
     return;
 }

正在检查文件描述符是否虚假(大概是在检查它是否为null或未定义),并使用错误调用函数自己的回调。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM