如最下面大段代码中有一句: ok = writer.write(data, encoding,function(){console.log('因为是异步,所以i都是0:' , i);}); 这一句的write方法是异步,ok初始为false,那么在紧接着的下一句console.log(ok)中,ok应该为true还是false? 如果ok是false那么说明ok的赋值至少要在下一个事件循环里, 如果ok是true那么说明这个异步方法已经完成了?!并且有返回值。 实际是true,我就搞不懂了,不知道怎么理解。
var fs = require('fs'); var w = fs.createWriteStream('txt.txt');
writeTimes(w,'utf8',function(){console.log('完成');});
function writeTimes(writer, encoding, callback) { var data = ''; var i = 10; write(); function write() { var ok = false; do { ok = false; data =new Date().getTime().toString() + '\n'; i -= 1; if (i === 0) { // last time! writer.write(data, encoding, callback); } else { ok = false; ok = writer.write(data, encoding,function(){console.log('因为是异步,所以i都是0:' , i);}); console.log('write方法外,第 %d 次,write的返回: %s' ,10-i, ok.toString()); } } while (i > 0 && ok); if (i > 0) { // had to stop early! // write some more once it drains writer.once('drain', write); } } }