如何将以下方法转换为异步方法(语法方式):
const download = function(url, dest, callback){
request.get(url)
.on('error', function(err) {console.log(err)} )
.pipe(fs.createWriteStream(`./voices/${dest}`))
.on('close', callback);
};
这种语法不正确:
async function download(function(url, dest, callback)){
request.get(url)
.on('error', function(err) {console.log(err)} )
.pipe(fs.createWriteStream(`./voices/${dest}`))
.on('close', callback);
};
因为function(url, dest, callabck)
未被识别为函数。
答案 0 :(得分:1)
如果要等待某个功能,请使用async。在这种情况下,你想要的是返回一个Promise,以便方法可以调用并等待它的执行:
const download = (url, dest) => {
return new Promise((resolve, reject) => {
request.get(url)
.on('error', reject)
.pipe(fs.createWriteStream(`./voices/${dest}`))
.on('close', resolve);
});
};
现在,您可以将该功能与await
一起使用,用法:
async function somewhere() {
try {
await download('http://.../', 'dest');
// code when completed
}
catch (err) {
// code when error
}
}
查看更多: