Javascript 如何从函数中返回值,该值是在中的回调函数中生成的?
我需要写一个函数,它将过滤出csv文件中的相关数据,并返回一个包含数据的数组。 csv文件包含作为列之一的时间,我希望在函数参数中提供的指定开始和结束时间内过滤掉这些行。我已经编写了下面的函数Javascript 如何从函数中返回值,该值是在中的回调函数中生成的?,javascript,csv,d3.js,Javascript,Csv,D3.js,我需要写一个函数,它将过滤出csv文件中的相关数据,并返回一个包含数据的数组。 csv文件包含作为列之一的时间,我希望在函数参数中提供的指定开始和结束时间内过滤掉这些行。我已经编写了下面的函数filter_data(请注意,它使用的是d3.js): 函数过滤器数据(开始时间、结束时间){ var formatDate=d3.time.format(“%H:%M”), parseDate=formattate.parse; VarData1=[]; d3.csv(“data.txt”,函数(错误
filter_data
(请注意,它使用的是d3.js):
函数过滤器数据(开始时间、结束时间){
var formatDate=d3.time.format(“%H:%M”),
parseDate=formattate.parse;
VarData1=[];
d3.csv(“data.txt”,函数(错误,数据){
data.forEach(函数(d){
if(parseDate(d.time)>=parseDate(start_时间)&&parseDate(d.time)
这背后的想法是构建可重用代码来获取数据。但是上面的函数总是返回
未定义的
。我故意将返回值放在回调函数中,因为我知道这将是一个异步调用(我还尝试在末尾放置return语句,但它返回空数组!) 在此实例中不能使用返回值。您需要传递一个回调函数作为filter\u data
的参数之一,并使用它返回数据
function filter_data(start_time, end_time, callback) {
var formatDate = d3.time.format("%H:%M"),
parseDate = formatDate.parse;
var data1 = [];
d3.csv("data.txt", function(error, data) {
data.forEach(function(d) {
if(parseDate(d.time) >= parseDate(start_time) && parseDate(d.time) < parseDate(end_time)) {
data1.push(d);
}
});
callback(data1);
});
}
filter_data(start_time, end_time, function (data) {
console.log(data);
});
函数过滤器数据(开始时间、结束时间、回调){
var formatDate=d3.time.format(“%H:%M”),
parseDate=formattate.parse;
VarData1=[];
d3.csv(“data.txt”,函数(错误,数据){
data.forEach(函数(d){
if(parseDate(d.time)>=parseDate(start_时间)&&parseDate(d.time)
该错误是由其他原因引起的。检查数据是否从d3.csv
正确返回。
function filter_data(start_time, end_time, callback) {
var formatDate = d3.time.format("%H:%M"),
parseDate = formatDate.parse;
var data1 = [];
d3.csv("data.txt", function(error, data) {
data.forEach(function(d) {
if(parseDate(d.time) >= parseDate(start_time) && parseDate(d.time) < parseDate(end_time)) {
data1.push(d);
}
});
callback(data1);
});
}
filter_data(start_time, end_time, function (data) {
console.log(data);
});