Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带fs和setInterval的节点js_Javascript_Node.js_Json_Fs - Fatal编程技术网

Javascript 带fs和setInterval的节点js

Javascript 带fs和setInterval的节点js,javascript,node.js,json,fs,Javascript,Node.js,Json,Fs,我有一个错误“回调必须是一个函数”与此代码 function saveCallback() {console.log("Sauvegarde du json")} bot.login(TOKEN) var test = '{"channelAlias":[]}' setInterval(fs.writeFile('stockage.json',test,saveCallback), 300000) 试一试 setInterval的签名是setInterval(callbackFUNCTION,

我有一个错误“回调必须是一个函数”与此代码

function saveCallback() {console.log("Sauvegarde du json")}
bot.login(TOKEN)
var test = '{"channelAlias":[]}'
setInterval(fs.writeFile('stockage.json',test,saveCallback), 300000)
试一试

setInterval
的签名是setInterval(callbackFUNCTION,time)

请看区别

下面不会给出错误

function willReturnFunction(){
    return function(){
        console.log("welcome")
    }
}
setInterval(willReturnFunction(),1000)
下面将给出错误(您的案例


我希望这有帮助!纳文

我不会放弃投票,但这是如何解决列出的问题的
fs。writeFile
是一个函数。那么为什么仍然错误地认为它不是一个函数呢?函数(){fs.writeFile()}和直接传递fs.writeFile()之间有区别。。。。这是因为您尝试执行的操作将在fs.writeFile()执行setInterval时立即调用它。并且fs.WriteFile不返回函数,因此给出的错误回调必须是“函数”。我所做的就是给它一个函数。所以唯一的区别是,,。。。在一种情况下,您自己调用函数,在另一种情况下,您将函数赋予setinterval,以便它执行它想要执行的操作。
fs.writeFile()
不返回任何内容,它需要回调函数进行后续操作
fs.writeFile()
是异步函数,所有异步函数都不返回值,有些可能返回
promise
,但
promise
是函数。您试图通过返回值来欺骗
willNotReturnFunction()
,但
fs.writeFile
不返回值。如果您的do
willNotReturnFunction(){console.log(“some string”);}
不返回任何内容,则
setInterval()
不会给出错误。是的,它将立即被调用,而不是从setInterval调用,但没有错误。试试这个
setInterval(console.log(“Hello”),1000)
。你能准确地分享错误所说的内容或错误中提供的其他信息吗。有两个回调,用于setInterval和fs.writeFile。你在谈论哪一个?fs.writeFile()不是一个函数吗?这可能已经解决了问题,但仍然不能说明直接调用有什么问题。试试这个
setInterval(console.log(“Hello”),1000),无错误。那么
fs.writeFile()
@NAVIN
fs.writeFile
是一个函数,而
fs.writeFile()
是一个
void
。所以300秒后将调用
void
,这显然是
“回调必须是函数”
错误。我不会放弃投票,但这是如何解决列出的问题的
fs。writeFile
是一个函数。那么,为什么仍然错误地认为它不是一个函数呢?请把它变成一个答案,这看起来不像一个解决方案。
const saveCallback = () => {
    console.log(`Sauvegarde du json`)
}
bot.login(TOKEN)
const test = `{ "channelAlias": [] }`
setInterval(() => fs.writeFile(`./stockage.json`, test, saveCallback), 300000)
function willReturnFunction(){
    return function(){
        console.log("welcome")
    }
}
setInterval(willReturnFunction(),1000)
function willNotReturnFunction(){
    //returning something other than funtion
    // like fs.wrtiteFile function
    return "some string"
}
setInterval(willNotReturnFunction(),1000)
const saveCallback = () => {
    console.log(`Sauvegarde du json`)
}
bot.login(TOKEN)
const test = `{ "channelAlias": [] }`
setInterval(() => fs.writeFile(`./stockage.json`, test, saveCallback), 300000)