NodeJS同步更改目录

时间:2016-12-07 14:48:48

标签: node.js asynchronous synchronous

我在NodeJS中有以下代码:

var targetDir = tmpDir + date;

try {
    fs.statSync(targetDir);
}
catch (e) {
    mkdirp.sync(targetDir, {mode: 755});
}

process.chdir(targetDir);

doStuffThatDependsOnBeingInTargetDir();

我的理解是在NodeJS中,像process.chdir这样的函数是异步执行的。因此,如果我之后需要执行一些代码,在执行后续函数之前,如何保证我在目录中?

如果process.chdir接受了回调,那么我会在回调中进行回调。但它并没有。这种异步范式对于新手来说肯定是混乱的,所以我想我会问。这不是最实际的考虑因素,因为代码似乎仍然有效。但我觉得我经常遇到这种情况,并且不知道如何处理这些情况。

1 个答案:

答案 0 :(得分:0)

process.chdir() function是一个同步功能。就像您自己说的那样,它没有回调函数来判断它是否成功。但是,如果出现问题,它确实会引发异常,因此您需要在try catch块内调用它。

您可以通过process.cwd() function检查进程是否已成功更改目录。