Javascript 解析承诺待定



JS的新手,我正试图围绕我可以使用一些见解的承诺。

let urlPath = "some urlpath with data"
let data = d3.csv(urlPath).then(function (d) { 
console.log(d);                     // Prints data as expected
});

我的目标是我希望函数将数据返回到 DATA 变量中,以便我可以继续在代码中进一步执行它。所以类似于以下内容:

let data = d3.csv(urlPath).then(function (d) { return d; });
//....do more things with data....
console.log(data); // returns Promise { pending }

但是代码一直给我承诺{待定}。任何想法如何解决承诺,以便我得到我想要的东西? 谢谢

这在ECMAScript 2015 版本中是不可能的。但是,使用 ES2017,您可以使用awaitasyncIIFE 中实现此目的:

(async () => {
let data = await d3.csv(urlPath)
//....do more things with data....
console.log(data)
})()

对于错误处理,您可以将其包装在try...catch中:

(async () => {
try {
let data = await d3.csv(urlPath)
//....do more things with data....
console.log(data)
} catch (error) {
// handle error
}
})()

这类似于ES2015中的以下内容:

d3.csv(urlPath).then(data => {
//....do more things with data....
console.log(data)
}).catch(error => {
// handle error
})

最新更新