async.each not iterating when using promises

后端 未结 2 1686
执笔经年
执笔经年 2020-12-12 05:27

I am trying to run an asynchronous loop async.each over an array of objects. On each object in the array, I am trying to run two functions sequentially (using

相关标签:
2条回答
  • 2020-12-12 06:22

    You are only using .then() callbacks so you handle success.

    But you should also add some .catch() callbacks to handle errors.

    Most likely you get errors that are not handled and nothing happens.

    For example:

                // ...
            }).then( function(result) {
                console.log("here");
                callback();
            }).catch(function (error) {
                console.log('Error:', error);
                callback(error);
            });
    
    0 讨论(0)
  • 2020-12-12 06:25

    It turns out that that I made an error in the getKeywords function. I was reading from a file, then iterating through each line by using a for loop and pushing the result to an array. This array was then returned by the function.

    async.each was working perfectly but was only ever receiving an array of length 1 to iterate over.

    I fixed this problem by changing the for loop to an async.each loop

    function getKeywords(keywordsFilename){
        //get keywords from the file
        return new Promise( function (resolve, reject) {
            var keywords = [];
            fs.readFile(keywordsFilename, function read(err, data) {
                if (err) {
                    reject(err);
                }
                content = data.toString();
                var lines = content.split("\n");
                async.each(lines, function(line, callback) {
                    if (line[0] === "#" || line == "") {
                        callback();
                    }
                    else {
                        keywords.push(extractKeyword(line));
                        callback();
                    }
                }, function (err) {
                    resolve(keywords);
                });
            });
        });
    }
    

    Writing the problem out helped, let me know if I should delete the question.

    Thanks for your help Mukesh Sharma and rsp.

    0 讨论(0)
提交回复
热议问题