async.map不调用回调

时间:2018-07-20 09:53:21

标签: javascript node.js async.js

我正在尝试使用async.js map function。但是,当我运行以下脚本时,永远不会调用第三个参数中的回调。控制台仅打印END。但是确实会调用iteratee。

const async = require('async');

async.map([1,2,3,4,5], n => n+1, (err, res) => {
    err ? console.log('Error: ' + err) : console.log(res);
});

console.log('END');

我在这里想念什么?

2 个答案:

答案 0 :(得分:1)

您不是在iteratee中调用完成回调

async.map([1,2,3,4,5], (n, done) => done(null, n+1), (err, res) => {
    err ? console.log('Error: ' + err) : console.log(res);
});
  

一个异步函数,应用于coll中的每个项目。 iteratee应该   完成转换后的项目。调用了(项目,回调)。

答案 1 :(得分:1)

async.js期望iteratee函数为 async ,否则它将无法按预期工作:

async.map([1,2,3,4,5], async n => n+1, (err, res) => {
    err ? console.log('Error: ' + err) : console.log(res);
});
console.log('END');
<script src="https://cdnjs.cloudflare.com/ajax/libs/async/2.6.1/async.js"></script>