Javascript 误导性“;不建议在不回调的情况下调用异步函数”;警告
NodeJS给了我一个警告 (节点:32600)[DEP013]弃用警告:调用异步 不推荐使用不带回调的函数 当我运行此“测试”时:Javascript 误导性“;不建议在不回调的情况下调用异步函数”;警告,javascript,node.js,asynchronous,async-await,fs,Javascript,Node.js,Asynchronous,Async Await,Fs,NodeJS给了我一个警告 (节点:32600)[DEP013]弃用警告:调用异步 不推荐使用不带回调的函数 当我运行此“测试”时: describe('whatever', () => { it('test simple', async () => { const dir = './build/fileTests'; if (fs.existsSync(dir)) { console.log(`deleting ${dir}`); aw
describe('whatever', () => {
it('test simple', async () => {
const dir = './build/fileTests';
if (fs.existsSync(dir)) {
console.log(`deleting ${dir}`);
await fs.rmdir(dir);
}
});
});
好吧,我几乎同意,不使用回调就使用异步函数是不好的(因为只有在cb中,您才能确定,它发生了,等等)
…若不是因为我有意使用,因为它们使它同步,所以我可以使用我得到的任何东西…(在这种特殊情况下,我可以回避,但这不是我的重点…)
那么我的问题是:我怎样才能摆脱这样的警告呢?
–以有意义的方式,在使用async/Wait时。。。
–处理返回值,如在
const r=…
中,不会将其识别为“回调处理”…fs.rmdir不会返回承诺对象,这就是为什么此代码在swag中失败。您必须使用库或util
核心模块中的node.jspromisify
方法来承诺它
注意:如果对fs
核心模块中的其他async方法使用相同的方法,它将失败
这样做
const util = require("util");
const fs = require("fs");
const removeDir = util.promisify(fs.rmdir);
const rmDir = async () => {
try {
await removeDir("directory_name");
} catch(ex) {
console.error(ex)
}
}
你一定要答应
Edit:声明了一个变量来保存@bergi建议的uti.promisify(fs.rmdir)
的值
编辑:使用
try..catch
blockasync/await
添加错误处理。不要使异步代码同步。它可能看起来像,但实际上不是。这使我认为回调是异步客户端。您应该将util.promisify
调用放在rmDir
函数之外,并存储r结果。已经做了更改。谢谢@Bergi。