使用async.forEach和异步操作的Node.js

瑞安·克劳考(Ryan CrawCour)

具有一个函数,该函数需要遍历数组,对每个项目执行异步操作,然后最终回调到调用方。

我可以得到async.forEach正常工作的基本情况。当我这样做时,它会起作用

async.forEach(documentDefinitions(), function (documentDefinition, callback) {               
    createdList.push(documentDefinition);
    callback(); //tell the async iterator we're done

}, function (err) {
    console.log('iterating done ' + createdList.length);
    callback(createdList); //tell the calling method we're done, and return the created docs.
});

createdList的长度是正确的长度。

现在,我想每次通过循环执行另一个异步操作。因此,我尝试将代码更改为以下内容;

function insert(link, callback){
    var createList = [];

    async.each(
       documentDefinitions(), 

       function iterator(item, callback) {
           create(collectionLink, item, function (err, created) {
               console.log('created');
               createdList.push(created);
               callback();
           });
       },

       function (err) {
          console.log('iterating done ' + createdList.length);
          callback(createdList);
       }
    );
}

其中create()是我的新异步操作。现在我得到一个无休止的循环,我们似乎再也没有碰到callback(createdList);

我事件尝试将callback()移到异步create()方法的回调中,但是这些都不起作用。

请帮助我,我陷入了回调地狱!

瑞安·克劳考(Ryan CrawCour)

将func更改为以下内容将其修复。

function insert(link, callback){
    var createdList = [];
    async.each(
        documentDefinitions(), 

        function iterator(item, cb) {
            create(collectionLink, item, function (err, created) {
                console.log('created');
                createdList.push(created);
                cb();
            });
        },

        function (err) {
            console.log('iterating done ' + createdList.length);
            callback(createdList);
        }
    );
}

不能确定,但​​是我认为这是将一次发生的回调更改为cb起到了作用。

这是一个范围界定的问题,他们开始感到困惑了吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用forEach时,与node.js异步流混淆。

来自分类Dev

使用 Node js Await/Async 函数

来自分类Dev

在Node.js中将Async与Waterfall和Recursion结合使用

来自分类Dev

在Node.js中异步foreach和猫鼬

来自分类Dev

使用嵌套的async.forEachSeries和async.waterfall控制Lambda Node.js代码的排序

来自分类Dev

使用Node.js和Java异步获取MQTT数据

来自分类Dev

如何使用async和await实现异步GUI操作?

来自分类Dev

使用node.js和async.js:系列执行顺序错误?

来自分类Dev

通过2个异步操作在Node.JS中使用Bluebird Promises

来自分类Dev

使用async.js系列中的GET方法和CouchDB操作进行循环不会执行多次

来自分类Dev

使用 saga js 进行异步操作

来自分类Dev

使用Node.js和async.queue将大型CSV插入MongoDB

来自分类Dev

使用Node.js,Async,Waterfall,Each和MySQL同步控制流

来自分类Dev

无法使用 mongoose、node.js、express 和 async 函数更新文档数据

来自分类Dev

如何在 Node.js 中使用“async/await”和“promises”进行同步执行?

来自分类Dev

在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

来自分类Dev

node.js中的foreach异步功能

来自分类Dev

在Node.js中使用Redis和Bluebird使用异步等待

来自分类Dev

Node.js和Express:如何在异步操作后返回响应

来自分类Dev

Node.js和MongoDB-多个异步数据库操作的原子性吗?

来自分类Dev

Node.js和MongoDB-多个异步数据库操作的原子性?

来自分类Dev

使用sequelize对MySQL的Node.js和异步调用阻止了其他用户

来自分类Dev

使用异步node.js函数控制流和错误处理

来自分类Dev

在node.js中使用异步瀑布

来自分类Dev

在node.js中使用异步模块

来自分类Dev

在node.js中使用异步模块

来自分类Dev

如何使用 async.js 简化 Node.js 中的回调代码

来自分类Dev

在node.js中,如何使用child_process.exec以使所有操作都可以异步发生?

来自分类Dev

在node.js中,如何使用child_process.exec以使所有操作都可以异步发生?

Related 相关文章

  1. 1

    使用forEach时,与node.js异步流混淆。

  2. 2

    使用 Node js Await/Async 函数

  3. 3

    在Node.js中将Async与Waterfall和Recursion结合使用

  4. 4

    在Node.js中异步foreach和猫鼬

  5. 5

    使用嵌套的async.forEachSeries和async.waterfall控制Lambda Node.js代码的排序

  6. 6

    使用Node.js和Java异步获取MQTT数据

  7. 7

    如何使用async和await实现异步GUI操作?

  8. 8

    使用node.js和async.js:系列执行顺序错误?

  9. 9

    通过2个异步操作在Node.JS中使用Bluebird Promises

  10. 10

    使用async.js系列中的GET方法和CouchDB操作进行循环不会执行多次

  11. 11

    使用 saga js 进行异步操作

  12. 12

    使用Node.js和async.queue将大型CSV插入MongoDB

  13. 13

    使用Node.js,Async,Waterfall,Each和MySQL同步控制流

  14. 14

    无法使用 mongoose、node.js、express 和 async 函数更新文档数据

  15. 15

    如何在 Node.js 中使用“async/await”和“promises”进行同步执行?

  16. 16

    在node.js中迭代大量异步调用/结果(使用ES6 / async / bluebird / generators)?

  17. 17

    node.js中的foreach异步功能

  18. 18

    在Node.js中使用Redis和Bluebird使用异步等待

  19. 19

    Node.js和Express:如何在异步操作后返回响应

  20. 20

    Node.js和MongoDB-多个异步数据库操作的原子性吗?

  21. 21

    Node.js和MongoDB-多个异步数据库操作的原子性?

  22. 22

    使用sequelize对MySQL的Node.js和异步调用阻止了其他用户

  23. 23

    使用异步node.js函数控制流和错误处理

  24. 24

    在node.js中使用异步瀑布

  25. 25

    在node.js中使用异步模块

  26. 26

    在node.js中使用异步模块

  27. 27

    如何使用 async.js 简化 Node.js 中的回调代码

  28. 28

    在node.js中,如何使用child_process.exec以使所有操作都可以异步发生?

  29. 29

    在node.js中,如何使用child_process.exec以使所有操作都可以异步发生?

热门标签

归档