javascript fs.replace回调错误捕获

时间:2014-03-03 08:51:28

标签: javascript node.js

我刚开始使用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

它只显示函数名称和参数名称,然后回调,这就是全部。 我想我必须知道如何弄清楚文档,回调的用法或其他参数..

非常感谢你。

1 个答案:

答案 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"
}