timer._repeat 不是函数吗? [英] timer._repeat is not a function?

查看:28
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆