Javascript 方法中的返回变量

Javascript 方法中的返回变量,javascript,html,Javascript,Html,我有一个方法'allmuses()'计算变量'visitatori_all_musei',现在我想以这样的方式返回这个变量,每次调用该方法时,我都可以给出结果 function allMuseums() { var nomeFile = "dati_musei.csv"; var mese_anno = []; d3.dsv(";", nomeFile, function(d) { return {

我有一个方法'allmuses()'计算变量'visitatori_all_musei',现在我想以这样的方式返回这个变量,每次调用该方法时,我都可以给出结果

function allMuseums() {
        var nomeFile = "dati_musei.csv";

        var mese_anno = [];

        d3.dsv(";", nomeFile, function(d) {
            return {
                Museo: d.Museo,
                Ingresso: d.Ingresso,
                Anno: d.Anno,
                Mese: d.Mese,
                Visitatori: d.Visitatori
            }
        }).then(function(data) {
            var visitatori_all_musei = filtraggio(data);
        });

    };
例如,我想执行console.log(allmuseurs())并获得结果。
如果我想把它赋给一个变量?例如,“var data=allmuseum()”?

对于ES6 async/await,您可以使用:

async function allMuseums() {
    var nomeFile = "dati_musei.csv";
    var visitatori_all_musei;
    var mese_anno = [];

    await d3.dsv(";", nomeFile, function(d) {
        return {
            Museo: d.Museo,
            Ingresso: d.Ingresso,
            Anno: d.Anno,
            Mese: d.Mese,
            Visitatori: d.Visitatori
        }
    }).then(function(data) {
        visitatori_all_musei = filtraggio(data);
    });

    return visitatori_all_musei
};
function allMuseums() {
    var nomeFile = "dati_musei.csv";

    var mese_anno = [];

    return d3.dsv(";", nomeFile, function(d) {
        return {
            Museo: d.Museo,
            Ingresso: d.Ingresso,
            Anno: d.Anno,
            Mese: d.Mese,
            Visitatori: d.Visitatori
        }
    }).then(function(data) {
        return filtraggio(data);
    });
};
有了承诺,您可以使用:

async function allMuseums() {
    var nomeFile = "dati_musei.csv";
    var visitatori_all_musei;
    var mese_anno = [];

    await d3.dsv(";", nomeFile, function(d) {
        return {
            Museo: d.Museo,
            Ingresso: d.Ingresso,
            Anno: d.Anno,
            Mese: d.Mese,
            Visitatori: d.Visitatori
        }
    }).then(function(data) {
        visitatori_all_musei = filtraggio(data);
    });

    return visitatori_all_musei
};
function allMuseums() {
    var nomeFile = "dati_musei.csv";

    var mese_anno = [];

    return d3.dsv(";", nomeFile, function(d) {
        return {
            Museo: d.Museo,
            Ingresso: d.Ingresso,
            Anno: d.Anno,
            Mese: d.Mese,
            Visitatori: d.Visitatori
        }
    }).then(function(data) {
        return filtraggio(data);
    });
};

它返回一个承诺,因此您必须执行
allmuseum。然后(console.log)

返回承诺和回调值:

function allMuseums() {
    var nomeFile = "dati_musei.csv";

    var mese_anno = [];

    //return here
    return d3.dsv(";", nomeFile, function (d) {
        return {
            Museo: d.Museo,
            Ingresso: d.Ingresso,
            Anno: d.Anno,
            Mese: d.Mese,
            Visitatori: d.Visitatori
        };
    }).then(data) {
        return filtraggio(data);//return here
    });
};
使用异步/等待:

async function allMuseums() {
    let nomeFile = "dati_musei.csv";
    let mese_anno = [];
    let data = await d3.dsv(";", nomeFile, function (d) {
        return {
            Museo: d.Museo,
            Ingresso: d.Ingresso,
            Anno: d.Anno,
            Mese: d.Mese,
            Visitatori: d.Visitatori
        };
    });
    return filtraggio(data);
};
记录输出:

allMuseums().then(console.log);
任务和其他事项:

allMuseums().then(data => {
   //do something here
   let myvar = data;
});

在启用
allmuses()
之前,您不能执行
console.log(allmuses())
async@Danny检查代码“console.log(allmusemuses())”是否返回undefined@Danny函数返回一个承诺,而不是未定义的承诺。在任何情况下,你都必须打开这个值。我在几件事情的中间,完全写错了代码,所以我更新了我的答案来更好地满足你的需要。@克里斯坦利检查你的异步/等待实现,如果我想把它分配给变量?例如“var data=allmuses()”?如果我想将其分配给变量?例如“var data=allmuses()”?