Export module after promise completes

17,234

This is my code

read.js

var dir = require('node-dir');

var files = new Promise(function (resolve, reject) {
    dir.files('../sample/sample.txt', function (err, res){
        if (err) {
            reject(err);
            console.log('Oops, an error occured %s', err);
        }
        else {
            resolve(res);
        }
    });
});

exports.files = files;

And then use it as such on the file that imports this module.

app.js

var read = require('read.js');

read.files.then(function(res) {
    console.log(res);
});

Your revised code

read.js

var dir = require('node-dir');

var files = function(){
    return new Promise(function (resolve, reject) {
        dir.files('../sample/sample', function (err, res){
            if (err) {
                    reject(err);
                    console.log('Oops, an error occured %s', err);
            }
            else {
                      resolve(res);
                      return res;
              }
        });
    });
}

exports.files = files;

app.js

var read = require('read.js');

read.files().then(function(res) {
    console.log(res);
});

Hope that helps.

Share:
17,234

Related videos on Youtube

Joe
Author by

Joe

Updated on September 15, 2022

Comments

  • Joe
    Joe over 1 year

    I actually want to put the "read" function in a different module and then require it in my main app.js. (I'm quite new to using promises)

    [REVISED]

    var dir = require('node-dir');
    var files = function getFiles(){
    
            return new Promise(function (resolve, reject) {
            dir.files('../sample/sample', function (err, res){
                if (err) {
                        reject(err);
                        console.log('Oops, an error occured %s', err);
                }
                else {
                          resolve(res);
                          return res;
                      }
                });
            });
    }
    
    console.log(files);
    
    module.exports = files;
    

    UPDATE AGAIN:

    //read.js
    
    var dir = require('node-dir');
    var Promise = require('promise');
    
    
    module.exports = new Promise(function (resolve, reject) {
            dir.files('../sample/sample', function (error, results){
                if (error) {
                        reject(error);
                        console.log('Oops, an error occured %s', err);
                }
                else {
                          resolve(results);
                      }
                });
            })
    
    //app.js
    
    var filelist = require('./read');
    
    filelist.then(function (res){
    
        console.log(res);
    })
    

    How do I go about that? I've tried "return new promise..." and putting the whole thing in a getFile function, but it doesn't return anything.

    What am I doing wrong?