繁体   English   中英

Javascript如何在创建数组以从不同函数进行访问时不使用全局变量

[英]Javascript How to not to use global variables when creating arrays to access from different functions

我用Papa Parse读取了一些数据,然后回调结果以unpack 我希望能够在其他函数中使用创建的数组。 (类似console.log(unpack(data))之外unpack

我如何称呼阵列?

//read data from csv 
function parseData(file, callback) {
    Papa.parse(file, {
        download: true,
        complete: function(results) {           
            callback(results.data);
        }
    });
}

// want to use the created arrays in other functions.
function unpack(data) {
    var locations = [];
    var bsis = [];
    var lngs = [];
    var lats = [];

    for (var i = 0; i < data.length; i++) {
        locations.push(data[i][2]);
        bsis.push(data[i][3]);
        lats.push(data[i][4]);
        lngs.push(data[i][5]);
    }
    return [locations, bsis, lats, lngs];
}

我用

parseData("data/Runs/csvs/csvs_with_latlon/ShelterRun1.csv", unpack);

当您有回调时,此时需要处理它。

如果您不想使用全局变量,则只需要无限期地嵌套函数即可:

 const A = (a, callback) => callback(a+5) const B = (r, callback) => callback(r + 5); A(5, (r) => B(r, console.log)) 

没有一种方法可以仅从回调中返回它。

就是说,您不必真正拥有全球顶级水平。 它可以是另一个函数内部的“全局”:

 const A = (a, callback) => callback(a+5) const B = (r, callback) => callback(r+5) const run = () => { let result; A(5, r => B(r, r => { result = r })); setTimeout(() => console.log(result), 50); } run() 

就是说,由于回调是异步模式,因此您不能强制异步是同步的,因此要在回调之外使用全局变量,您仍然必须具有某种等待或其他异步模式来检查结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM