将一组函数asynchronous传递给一个数组

所以我有一个四个JSON对象的数组,我想添加三个新的字段到这些对象的每一个。 要做到这一点,我有一个asynchronous函数添加每个新的字段。 理想情况下,我想要做的就是将asynchronous函数限制为只有两个更新。 然后在最后callback原始函数并打印出新形成的数组。 但我不能得到这个工作,虽然我觉得我很接近…

var async = require('async'); // My Array of JSON objects var allIssues = [ { id: '1', color: 'blue' }, { id: '2', color: 'red' }, { id: '3', color: 'gold' } ]; addExtraFeaturesToEachissue(allIssues, function(data) { console.log(data); }); function addExtraFeaturesToEachissue(allIssues, callback) { async.each( allIssues, async.applyEach([addheight, addWidth, addWeight]), callback(data) ); } function addHeight(issue, callback) { setTimeout(function() { issue.fields['height'] = "1000"; callback(issue); }, 100); } function addWidth(issue, callback) { setTimeout(function() { issue['width'] = "100"; callback(issue); }, 300); } function addWeight(issue, callback) { setTimeout(function() { issue.['weight'] = "500"; callback(issue); }, 200); } 

假设被调用的函数会做一些长期的工作,老实说我看不到使用asynchronous的必要,为什么不使用Promise呢?

 // My Array of JSON objects var allIssues = [ { id: '1', color: 'blue' }, { id: '2', color: 'red' }, { id: '3', color: 'gold' } ]; addExtraFeaturesToEachissue(allIssues, function(data) { console.log(data); }); function addExtraFeaturesToEachissue(allIssues, callback) { var requests = allIssues.map((issue) => { return addHeight(issue).then(addWidth).then(addWeight); }); Promise.all(requests).then((data) => console.log('done', data)); } function addHeight(issue) { return new Promise((resolve, reject) => { setTimeout(function() { issue.height = "1000"; resolve(issue); }, 100); }); } function addWidth(issue) { return new Promise((resolve, reject) => { setTimeout(function() { issue.width = "100"; resolve(issue); }, 300); }); } function addWeight(issue) { return new Promise((resolve, reject) => { setTimeout(function() { issue.weight = "500"; resolve(issue); }, 200); }); } 

编辑我刚刚看到你在最后完整的数组。 正如Jared Smith所build议的,你可以使用Promise.all;)