javascript - 对于异步函数的迭代

标签 javascript node.js

我正在使用 for each 来处理一个列表,我希望只有当元素 n-1 结束时才执行该元素 n:

var elements = ["stuff1", "stuff2", "stuff3"];

elements.forEach(function(element){
    someAsyncFunction(element, function(){
       console.log('do more stuff');
   });
});

我需要它们相互等待并以正确的顺序执行。

编辑:我遇到了 process.nextTick(),但我不确定它是否保证等待和顺序。

最佳答案

只需将元素存储在数组中,方法与您在问题中所做的完全相同。然后使用 elements.shift()检索并删除第一个元素。

var elements = ["stuff1", "stuff2", "stuff3"];
(function next () {
    if (!elements.length) {
        return;
    }

    var element = elements.shift();
    someAsyncFunction(element, function (err, result) {
        …
        next();
    });
})();

关于javascript - 对于异步函数的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489178/

相关文章:

javascript - 页面刷新javascript后如何保存事件选项卡

javascript - JS新手: How to properly call a recursive function in an HTML document?

javascript - 如何自动保存自动完成值?

node.js - 使用 socket.io-stream 将文件从服务器流式传输到客户端

javascript - 将前端 Javascript 与后端 Node.Js 和 mySQL 集成

php - Photoshop 中是否有类似 Blob 修复工具的 JQuery 插件?

javascript - 如何使用 React Router v1.0.0 在页面中链接

javascript - 如何用 Electron 打开 React 的屏幕?

node.js - 如何为非静态文件响应设置 max-age

javascript - 服务器端渲染中的 React Cookie(Node/Express)