JS的新手,我想把我的头放在我可以利用一些见解的Promise上。
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 }
但是代码不断给我Promise {pending}。有什么想法可以解决我的诺言,以便我得到想要的东西吗? 谢谢,
答案 0 :(得分:2)
这对于ECMAScript 2015版本是不可能的。但是,使用ES2017,您可以使用async
在await
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
})