我才刚刚开始理解诺言。我知道您可以使用以下内容来处理d3.csv('https://url.com').then(d => handle(d))
。但是,我遇到了下面的示例,我很难理解每个部分的作用。有人可以解释吗?
编辑:
我了解Promise.all
确实“传递了一组诺言,并且仅在所有这些诺言得到解决或其中一个诺言被拒绝后才触发函数。”
此示例摘自D3.Js in Action中的Listing 7.4. The adjacency matrix function
。
var PromiseWrapper = d => new Promise(resolve => d3.csv(d, p => resolve(p))); // part1
Promise
.all([
PromiseWrapper("../data/nodelist.csv"),
PromiseWrapper("../data/edgelist.csv")
]) //part2
.then(resolve => {
createAdjacencyMatrix(resolve[0], resolve[1]);
}); //part3
编辑:
要合并d3v5 d3-fetch
,以下正确吗?
//ver1
const promise1 = d3.csv('../data/nodelist.csv')
const promise2 = d3.csv('../data/nodelist.csv')
Promise.all([promise1, promise2]).then(resolve =>
createAdjacencyMatrix(resolve[0], resolve[1]));
还是我需要执行以下操作?
//ver2
const promise1 = d3.csv('../data/nodelist.csv').then(d => d)
const promise2 = d3.csv('../data/nodelist.csv').then(d => d)
Promise.all([promise1, promise2]).then(resolve =>
createAdjacencyMatrix(resolve[0], resolve[1]));
ver1
和ver2
有什么区别?
答案 0 :(得分:0)
A
返回一个诺言。
Promise.all将所有这些promise放在一个数组中,并返回一个promise,当所有promise都解决后,将予以解决。
PromiseWrapper("../data/nodelist.csv")