Javascript 如何从这个arrow函数返回pkgInfo对象?
我安装了一个npm库reiko解析器,它使用控制台日志显示pkgInfo对象。我更改了返回此pkgInfo对象的代码,但它返回未定义的对象。我不熟悉arrow函数,所以我完全不知道如何获取pkgInfo对象,除非我声明一个静态变量并将pkgInfo对象的值赋给它,这是一种糟糕的做法Javascript 如何从这个arrow函数返回pkgInfo对象?,javascript,arrow-functions,Javascript,Arrow Functions,我安装了一个npm库reiko解析器,它使用控制台日志显示pkgInfo对象。我更改了返回此pkgInfo对象的代码,但它返回未定义的对象。我不熟悉arrow函数,所以我完全不知道如何获取pkgInfo对象,除非我声明一个静态变量并将pkgInfo对象的值赋给它,这是一种糟糕的做法 function get_icon(serverFilePath) { const readerPkg = new PkgReader(serverFilePath, 'apk', { withIcon: t
function get_icon(serverFilePath) {
const readerPkg = new PkgReader(serverFilePath, 'apk', { withIcon: true });
return readerPkg.parse((err, pkgInfo) => {
if (err) {
console.log(err);
} else {
console.log(pkgInfo); // works with console log but not return??
return pkgInfo //undefined
}
});
}
编辑:这也是npm pg中给出的代码
const reader =
new PkgReader(filePath, 'apk', { withIcon: true });
reader.parse((err, pkgInfo) => {
if (err) {
console.error(err);
} else {
console.log(pkgInfo); // pkgInfo.icon is encoded to base64
}
});
应该是
return pkgInfo
与普通函数相同No,因为某种原因,如果我在解析函数中调用return,它将返回未定义的值。如果只执行return readerPkg.parse((err,pkgInfo)=>{if(err){console.log(err);}else{console.log(pkgInfo)会发生什么; } });代码>这样行吗?它仍然返回未定义的…然后它将pkgInfo打印到控制台。看起来reader.parse总是在调用返回后在函数末尾调用