所以我有以下代码
right_on= 'outcode'
但我没有得到所需的输出。因为看起来像readfile是由一个单独的线程执行的,所以“processed”的值不可靠。
我对nodejs不太熟悉,所以非常感谢任何帮助。
答案 0 :(得分:0)
是的,你是对的,你的执行是由不同的线程执行的。
在这种情况下,您需要使用promises。
您可以使用“承诺FS ”轻松解决您的需求(无论如何,您可以使用任何其他承诺解决方案)。
您的代码如下所示:
fs = require('promise-fs');
var fname = 'test.txt' ;
var toMove = false ;
fs.readFile('test.txt','utf8')
.then (function (content) {
if(content.indexOf('is VALID') !== -1) {
console.log('pattern found!');
toMove = true ;
}
else { toMove = false
}
return toMove ;
}).
then (function (toMove) {
if(toMove) {
var oldPath = 'test.txt'
var newPath = '/tmp/moved/file.txt'
fs.rename(oldPath, newPath, function (err) {
if (err) throw err
console.log('Successfully renamed - moved!')
}) ;
}
})
.catch (function (err) {
console.log(err);
})
创建文件“test.txt”并添加以下内容:
this is text.file contents
token is VALID
上面的代码将评估“VALID”是否作为内容出现,如果是,那么它会将文件“test.txt”从当前文件夹移动到“/ tmp”目录中名为“moving”的新文件。它还会将文件重命名为“file.txt”文件名。
希望它对你有所帮助。
此致
答案 1 :(得分:0)
看起来你正在影子@Inject
,试图将它用作变量和节点模块。最简单的方法是为文件选择一个不同的变量名称,并将处理逻辑移到path
的回调中。
fs.readFile