timer._repeat 不是函数吗? [英] timer._repeat is not a function?
本文介绍了timer._repeat 不是函数吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
节点 v4.2.6
我有一个小程序:
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;
}
}
在将前几个字节写入文件后,出现以下错误:
After it writes the first few bytes to the file, it errors out with:
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)
出了什么问题,我该如何纠正?
What's going wrong and how can I correct it?
推荐答案
这个:
var timer = setInterval(write(),100);
正在传递 write()
的 result 作为每 100 毫秒调用的函数.write()
不返回函数(undefined
是隐式返回的),因此您会得到 TypeError
.相反,传递函数本身:
is passing the result of write()
as the function to be called every 100 milliseconds. write()
doesn't return a function (undefined
is implicitly returned), so you get the TypeError
. Instead, pass the function itself:
var timer = setInterval(write,100);
这篇关于timer._repeat 不是函数吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文