首页 > 解决方案 > 在方法中返回变量

问题描述

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

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(allMuseums()) 并得到结果。相反,如果我想将它分配给一个变量?例如'var data = allMuseums()'?

标签: javascripthtml

解决方案


使用 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
};

有了 Promise,你可以使用这个:

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);
    });
};

它返回一个承诺,所以你必须做allMuseums.then(console.log)


推荐阅读