回调函数返回未定义的[重复项]

问题描述 投票:1回答:1

我正在尝试将return内的object设为callback function

在以下情况下,console.log()显示预期的结果

var dVizModule = (function(){
    let dataset;

    function loadData(fileName) {
        dataset = d3.csv(fileName, (data) => {
            dataset = data;
            console.log(dataset);
        });
    };

    return {
        loadData: loadData
    }

})();

dVizModule.loadData("data/time_scale_data.csv")

但是当我尝试在return中使用callback function时,故事就不同了,它返回了undefined

var dVizModule = (function(){
    let dataset;

    function loadData(fileName) {
        dataset = d3.csv(fileName, (data) => {
            dataset = data;
            return dataset;
        });
        // return dataset; or even here!
    };

    return {
        loadData: loadData
    }

})();

console.log(dVizModule.loadData("data/time_scale_data.csv"))
javascript d3.js design-patterns callback revealing-module-pattern
1个回答
0
投票
由于其基于回调的工作流程,因此以上代码将无法正常工作。 d3.csv是一个异步函数,您只能通过传递给它的回调获取结果,因此即使loadData也需要遵循相同的模式。您只需要编写类似的内容。
© www.soinside.com 2019 - 2024. All rights reserved.