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,您可以使用await
在async
IIFE 中实现此目的:
(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
})