我正在使用papaparse来解析使用以下内容的本地csv文件:
var display_links = [];
Papa.parse(file_links, {
header: true,
download: true,
dynamicTyping: true,
complete: function (results) {
results.data.push(display_links)
}
});
console.log(display_links)
如何将解析结果推送到本地数组中,以便在其他函数/进程中使用它?
console.log(display_links)
返回一个空数组。
在您的完整功能中,您可以使用重新分配替换results.data.push(display_links)
:display_links = results.data;
。看来你倒退了。
如果您在该函数范围之外声明了display_links,那么您以后应该可以访问结果。所以简单的解决方案就是将其拉出局部范围。
如果这不可行,请提供更完整的示例。
let display_links = [];
function doSomethingWithDisplayLinks(results) {
display_links = results;
}
console.log('display_links before:', display_links);
doSomethingWithDisplayLinks(['http://www.google.com']);
console.log('display_links after:', display_links);
面对与Papaparse类似的问题,或者是我目前对图书馆和回调的了解。虽然我可以指出你可以为自己找到答案的方向。
首先,你的display_links
出现了一个空数组,因为当通过Papaparse解析文件时,complete
是一个异步回调函数,这意味着在你选择的文件被完全处理后,你在回调中分配display_links
是异步发生的。因此,当您记录变量时,尚未分配结果。简而言之,这是行不通的。
现在要解决你的问题,我发现的唯一答案就是无论你对display_links
有什么计划,你都可以把它们放在一个函数中,从complete
里面,用display_links
作为参数调用该函数。这样,您的函数将使用解析的结果执行。
查看异步JS以及回调如何为您自己寻找更优化的解决方案,如果这对您不起作用的话。
旁注 - 我的问题是,我想在函数内部抽象解析和其他相关操作,一旦文件被读取/解析,该函数将返回最终结果。重新调整最终结果的最后一部分是我无法完成的事情,因为我认为你只能前进并从complete
回调调用另一个函数并且返回不起作用:/
参考 -
complete
。