<pending>获取结果 承诺 {} 使用 d3.csv 异步函数后



所以我正在使用d3.CSV函数将CSV文件转换为数组。我目前正在将此函数放入一个异步函数中,然后等待d3.csv函数返回的结果。当我打印最终值(LOG1(时,我确实得到了正确的数组。IMG:LOG 1 的结果是正确的数组

转换功能:

async function generateCountryData() {
let dataArray = await d3.csv("./data/data.csv", (d) => {
return {
"id" : +d["id"], // The '+' turns a string into a number
"country" : d["name"],
"faction" : +d["overlord"]
}
}).then((data) => {
return data.map(Object.values)
});
// LOG 1
console.log("Proto Data Array: ", dataArray);
return dataArray;
}

我遇到的问题是,当我使用该函数获取数组,并在其范围之外记录函数的结果时,我会得到一个Promise {<pending>},其中[[PromiseResults]]是正确的数组。

调用转换功能:

countryDataArray = generateCountryData();
// LOG 2
console.log("Country Data (Ary.): ", countryDataArray);

IMG:作为LOG 2 结果的PromisePaying

我想知道如何获得一个数组,它不是一个挂起的promise,作为调用转换函数的输出。

我找到了一种方法来解决我得到的承诺。我通过使main function而不是generate function成为异步函数来实现这一点;则使用CCD_ 5作为CCD_。

生成函数:

function generateCountryData(){

let dataArray = d3.csv("./data/data.csv", (d) => {
return {
"id" : +d["id"], 
"country" : d["name"],
"faction" : +d["overlord"]
}
}).then((data) => {
return data.map(Object.values)
});
// LOG 1
console.log("Proto Data Array: ", dataArray);
return dataArray;
}

调用生成函数的主函数:

async function build(){
countryDataArray = await generateCountryData();
console.log("Country Data (Ary.): ", countryDataArray);
drawMap(countryDataArray);
}
build();

最新更新