【问题标题】:async.map not calling callbackasync.map 不调用回调
【发布时间】:2018-12-28 14:37:52
【问题描述】:

我正在尝试使用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');

我在这里错过了什么?

【问题讨论】:

    标签: javascript node.js async.js


    【解决方案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>

    【讨论】:

    • 谢谢!有道理……我不知道你也可以使用 ES 异步函数。
    【解决方案2】:

    你没有在 iteratee 中调用 done 回调

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

    应用于 coll 中每个项目的异步函数。被迭代者应该 完成转换后的项目。使用(项目,回调)调用。

    【讨论】:

    • Argh... 有道理 :-D 谢谢!
    猜你喜欢
    • 2013-12-31
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多