在承诺完成后导出模块

我真的想把“读”function放在不同的模块,然后在我的主app.js需要它。 (我使用promise很新颖)

[修订]

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

希望有所帮助。