JavaScript, Node.JS : 等到复制文件夹,然后编辑其中的文件(异步,等待)
JavaScript, Node.JS : Wait until copying a folder, then edit files in it (async, await)
我正在构建一个 node.js 程序,它复制目录然后编辑其中的文件。但是,我的代码尝试在复制完成之前编辑文件。我尝试在代码中添加 await
,但无法解决问题。以下是我的代码。
const srcDir = `./old_dir`
const destDir = `./new_dir`
await fse.copy(srcDir, destDir, function (err) {
if (err) throw err
})
// call the function that edits the files
await create_page({info: queryparams})
我想等到目录复制完成后再调用create_page。但是,以下代码在复制目录之前调用 create_page,这会导致“没有这样的文件或目录”的错误。
来自 fs-extra 的文档:
All async methods will return a promise if the callback isn't passed.
由于您将回调传递给 copy
方法,await
将不会“等待”异步操作完成。所以删除回调参数:
const srcDir = `./old_dir`
const destDir = `./new_dir`
await fse.copy(srcDir, destDir);
// call the function that edits the files
await create_page({info: queryparams})
如果您不希望在错误发生时重新抛出错误,则将 await
代码包装在 try...catch
块中。
添加@trincot 答案的替代方法,您还可以使用 copySync(src, dest[, options])
等待任务完成的方法。
我正在构建一个 node.js 程序,它复制目录然后编辑其中的文件。但是,我的代码尝试在复制完成之前编辑文件。我尝试在代码中添加 await
,但无法解决问题。以下是我的代码。
const srcDir = `./old_dir`
const destDir = `./new_dir`
await fse.copy(srcDir, destDir, function (err) {
if (err) throw err
})
// call the function that edits the files
await create_page({info: queryparams})
我想等到目录复制完成后再调用create_page。但是,以下代码在复制目录之前调用 create_page,这会导致“没有这样的文件或目录”的错误。
来自 fs-extra 的文档:
All async methods will return a promise if the callback isn't passed.
由于您将回调传递给 copy
方法,await
将不会“等待”异步操作完成。所以删除回调参数:
const srcDir = `./old_dir`
const destDir = `./new_dir`
await fse.copy(srcDir, destDir);
// call the function that edits the files
await create_page({info: queryparams})
如果您不希望在错误发生时重新抛出错误,则将 await
代码包装在 try...catch
块中。
添加@trincot 答案的替代方法,您还可以使用 copySync(src, dest[, options])
等待任务完成的方法。