Nodejs非同期コードモードの実戦
4091 ワード
1.
#Synchronous #
var fs = require('fs'),
filenames,
i,
processId;
filenames = fs.readdirSync(".");
for (i = 0; i < filenames.length; i++) {
console.log(filenames[i]);
}
console.log("Ready.");
processId = process.getuid();
#Asynchronous#
var fs = require('fs'),
processId;
fs.readdir(".", function (err, filenames) {
var i;
for (i = 0; i < filenames.length; i++) {
console.log(filenames[i]);
}
console.log("Ready.");
});
processId = process.getuid();
#------------------------- -------------------------#
2. ,
#Synchronous #
var fs = require('fs'),
oldFilename,
newFilename,
isSymLink;
oldFilename = "./processId.txt";
newFilename = "./processIdOld.txt";
fs.chmodSync(oldFilename, 777);
fs.renameSync(oldFilename, newFilename);
isSymLink = fs.lstatSync(newFilename).isSymbolicLink();
#Asynchronous#
var fs = require('fs'),
oldFilename,
newFilename;
oldFilename = "./processId.txt";
newFilename = "./processIdOld.txt";
fs.chmod(oldFilename, 777, function (err) {
fs.rename(oldFilename, newFilename, function (err) {
fs.lstat(newFilename, function (err, stats) {
var isSymLink = stats.isSymbolicLink();
});
});
});
#------------------------- -------------------------#
3.
#Synchronous #
var fs = require('fs');
function calculateByteSize() {
var totalBytes = 0,
i,
filenames,
stats;
filenames = fs.readdirSync(".");
for (i = 0; i < filenames.length; i ++) {
stats = fs.statSync("./" + filenames[i]);
totalBytes += stats.size;
}
console.log(totalBytes);
}
calculateByteSize();
#Asynchronous#
var fs = require('fs');
var count = 0,
totalBytes = 0;
function calculateByteSize() {
fs.readdir(".", function (err, filenames) {
var i;
count = filenames.length;
for (i = 0; i < filenames.length; i++) {
fs.stat("./" + filenames[i], function (err, stats) {
totalBytes += stats.size;
count--;
if (count === 0) {
console.log(totalBytes);
}
});
}
});
}
#Asynchronous#
calculateByteSize();
#------------------------- -------------------------#
4.
#Synchronous #
var fs = require('fs');
var path1 = "./",
path2 = ".././";
function countFiles(path) {
var filenames = fs.readdirSync(path);
return filenames.length;
}
console.log(countFiles(path1) + " files in " + path1);
console.log(countFiles(path2) + " files in " + path2);
#Asynchronous#
var fs = require('fs');
var path1 = "./",
path2 = ".././",
logCount;
function countFiles(path, callback) {
fs.readdir(path, function (err, filenames) {
callback(err, path, filenames.length);
});
}
logCount = function (err, path, count) {
console.log(count + " files in " + path);
};
countFiles(path1, logCount);
countFiles(path2, logCount);