我正在使用ID3标记阅读器库https://github.com/43081j/id3&调用的示例函数采用这种格式......
id3(this.files[0], function(err, tags) {
console.log(err, tags);
});
它适用于大多数文件,但有时会出现这样的错误
Uncaught URIError: URI malformed
我试图将此函数包装在try ... catch中以捕获这样的错误
try {
id3(file, function(err, tags) {
if (err) throw err;
console.log('tags .. ' + tags);
});
}
catch (e) {
console.log('caught it!');
}
但实际上这个错误仍然无法保持原状。
我认为这可能与函数是异步的事实有关,但我真的很难理解如何防止这种情况并捕获错误。
最终我想将整个函数包装在一个承诺中,如下所示:
return new Promise(function(resolve, reject) {
try {
id3(file, function(err, tags) {
if(err) throw err
resolve(tags);
});
}
catch (err) {
reject('blank');
}
}
但无论我尝试什么,拒绝方法永远不会被错误调用。
谢谢!