timer._repeat不是函数吗?
问题描述:
节点v4.2.6timer._repeat不是函数吗?
我有一个小节目:
var chokidar = require('chokidar');
var _ = require('lodash');
var q = require('q');
var fs = require('fs');
var faker = require('faker');
var file = 'testfile.txt';
var pending = '';
var writer;
fs.open(file,'w+',function(){
writer = fs.createWriteStream(file);
writer.on('error',function(err){
console.log(err);
});
writer.on('drain',rewrite);
var timer = setInterval(write(),100);
});
function write(){
var data = faker.Helpers.createCard();
console.log('attempting to write ' + Buffer.byteLength(data,'utf8') + ' bytes');
var ok = writer.write(data.toString());
if(!ok){
console.log('buffer full, saving in memory');
pending += data;
}else{
console.log('written');
}
}
function rewrite(){
console.log('buffer empty, writing ' + Buffer.byteLength(data,'utf8') + ' bytes from memory');
var ok = writer.write(pending);
if(!ok){
console.log('buffer full again. Saving in memory again');
pending += data;
}
}
之后将其写入文件中的前几个字节,它的错误了与:
timers.js:275
timer._repeat();
^
TypeError: timer._repeat is not a function
at wrapper [as _onTimeout] (timers.js:275:11)
at Timer.listOnTimeout (timers.js:92:15)
什么错和我该如何纠正它?
答
此:
var timer = setInterval(write(),100);
正在通过结果的write()
作为函数每100毫秒被调用。 write()
不返回一个函数(undefined
隐式返回),所以你得到TypeError
。相反,通过函数本身:
var timer = setInterval(write,100);
您应该将'write'而不是'write()'传递给'setInterval()'。这不是直接的问题;什么是“timers.js”? – Pointy
@有点哦,是的。好点 – Houseman