javascript - 为什么map函数在promise之后没有执行?

标签 javascript d3.js promise

这是我的代码:

let promise = new Promise(( resolve ) => {
        let dataArray = d3.csvParse(csvData);
        return resolve(dataArray);
    });

    promise.then(( dataArray: Array<Object> ) => {
        return _(dataArray).transform(( result, item, name ) => {
            result[ item.district ]         = result[ item.district ] || {};
            result[ item.district ][ name ] = item;
            return result;
        }).value();

    }).then(data => data.map(d => console.log(d))); // not loading

我正在使用 d3 解析 csv 文件。解析完成后,我将解析 Promise 并尝试对返回的数组执行一系列 lodash 操作。我尝试链接变换和映射的方法,还尝试使用 _.chain(...) 强制链接。

控制台不会返回任何错误,我可以在 then 部分记录数据数组。

任何建议都将受到高度赞赏。

最佳答案

map 旨在与数组一起使用。在这里,您的 result 数组不包含任何项目,但包含与现有地区一样多的属性。

result[ item.district ]         = result[ item.district ] || {};

因此,您可以使用 Object.keys(data).map() 而不是 map:

.then(data => {
    Object.keys(data).map(function(elem) { console.log(data[elem]); });
})

https://runkit.com/587b513664a8d4001433714a/587b63902c363d0014cc3964

关于javascript - 为什么map函数在promise之后没有执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41660656/

相关文章:

node.js - Node 等待 Promise.all() 完全解决

javascript - jQuery Promise 然后在 AJAX 之后不工作

javascript - 检测视口(viewport)并重定向到不同的主页

javascript - Vaadin7 jQuery UI 集成

javascript - 如何在 javascript 中允许删除、退格和禁用空格键?

javascript - 带有隐藏条形的 C3js 堆叠条形图

javascript - 在 D3.js 中添加列

Javascript:如何从时间戳数组中查找时间间隔中的最大N个时间戳

node.js - 如何与 forEach 同时执行 Promise?

javascript - 非常简单的 d3.js 折线图未在浏览器中显示