Giter VIP home page Giter VIP logo

Comments (4)

xavi- avatar xavi- commented on September 15, 2024

I'm not sure if nested Step calls are supported, but in any case I'm taking a look at the bug.

from step.

gleber avatar gleber commented on September 15, 2024

Please do! :)

from step.

 avatar commented on September 15, 2024

I also believe there is a race condition. Reproduction:

var dir = '/a/directory/which/has/subdirectories';
var fs = require('fs');
var step = require('step');

var dirs = function(dir, cb) {
    fs.readdir(dir, function(err, files) {
        step(function() {
            var group = this.group();
            files.forEach(function(file) {
                var cb = group();
                fs.stat(dir + '/' + file, function(err, stats) {
                    if(stats.isDirectory()) {
                        cb(null, dir + '/' + file);
                    } else {
                        cb(null, null);
                    }
                });
            });
        }, function(err, files) {
            var group = this.group();
            files.forEach(function(file) {
                if(file !== null) {
                    dirs(file, group());
                }
            });
        }, cb);
    });
};
var p = null;
var go = function() {
    dirs(dir, function(err, dirs) {
        if(p === null) {
            p = dirs.length;
        }
        if(p !== dirs.length) {
            throw new Error('weird, previous callback had ' + p + ' dirs but now it has ' + dirs.length + ' dirs!');
        }
        go();
    });
};
go();

from step.

raffecat avatar raffecat commented on September 15, 2024

Hi ghost/gleber,

I ran into a similar issue with fs callbacks and step, which I have documented in the comments of this related issue #42.

I have a fork with a fix in place, but I haven't made a clean pull request yet. Even so, if you're blocking on this issue, the proposed work-around is straight-forward.

from step.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.