Promise完成后的导出模块 [英] Export module after promise completes

查看:31
本文介绍了Promise完成后的导出模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实际上希望将"Read"函数放在另一个模块中,然后在我的主app.js中需要它。(我对使用承诺还很陌生)

[审校]

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;

再次更新:

//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);
})

我该怎么做?我试过"归还新的承诺..."并将整个内容放在一个getFile函数中,但它不会返回任何内容。

我做错了什么?

推荐答案

这是我的代码

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;

然后在导入此模块的文件上使用它。

app.js

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

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

修改后的代码

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);
});

希望这会有帮助。

这篇关于Promise完成后的导出模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆