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
不返回值。如果您的dowillNotReturnFunction(){console.log(“some string”);}
不返回任何内容,则setInterval()
不会给出错误。是的,它将立即被调用,而不是从setInterval调用,但没有错误。试试这个setInterval(console.log(“Hello”),1000)
。你能准确地分享错误所说的内容或错误中提供的其他信息吗。有两个回调,用于setInterval和fs.writeFile。你在谈论哪一个?fs.writeFile()不是一个函数吗?这可能已经解决了问题,但仍然不能说明直接调用有什么问题。试试这个setInterval(console.log(“Hello”),1000)代码>,无错误。那么fs.writeFile()
@NAVINfs.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)