我刚开始使用js编程,所以只是试着想出语法。
我认为我理解回调函数的用法,但有时它让我感到困惑。
例如,请查看此代码。
#!/usr/bin/env node
var fs = require('fs'),
oldPath = './input.js';
var tmp = oldPath.replace('wrong', 'output', function (err) {
if(err)
console.log('rename callback ', err);
});
在这段代码中,我预计'if(err)'统计信息将捕获错误状态,因为oldPath不包含'错误'字符串。 但它没有发生。
最后,我想要做的是“在目录中更改多个文件名”。 所以我制作了一些js脚本,它在shell上运行良好,但是, 我想赶上错误的情况, 例如找不到匹配的文件名。
请参考此网址并提前感谢您。 https://github.com/nicejwjin/jsScript_FileRename/blob/master/change_filename
PS。在javascript文档的引用上,我无法理解为什么API对这个表达式没有任何想法。 像这样。 http://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback
它只显示函数名称和参数名称,然后回调,这就是全部。 我想我必须知道如何弄清楚文档,回调的用法或其他参数..
非常感谢你。
答案 0 :(得分:0)
字符串上的replace方法是同步的 - 它没有像大多数node.js函数那样的异步回调。它用第二个参数替换第一个参数的第一个实例,如果它没有在任何地方找到第一个参数,那么它返回自己而没有任何修改:
"a b a b".replace("a", "cc") // returns "cc b a b"
"a b a b".replace("x", "yy") // returns "a b a b"
要检测第一个参数是否实际出现在字符串中,您可以使用indexOf:
if (str.indexOf("hello") === -1) {
// str does not contain "hello"
} else {
// str contains "hello"
}