在承诺完成后导出模块
我真的想把“读”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); });
希望有所帮助。