承诺完成后导出模块
Export module after promise completes
我实际上想将 "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);
})
我该怎么做?我试过 "return new promise..." 并将整个东西放在 getFile 函数中,但它没有 return 任何东西。
我做错了什么?
这是我的代码
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);
});
希望对您有所帮助。
Async/Await接近
promise-mysql
模块的示例。
connection.js
const mysql = require('promise-mysql');
const dbDev = async () => {
return await mysql.createConnection({
host: YOUR_MYSQL_HOST,
user: YOUR_MYSQL_USER,
password: YOUR_MYSQL_PASSWORD,
database: YOUR_MYSQL_DB_NAME
});
}
module.exports = {
dbDev
};
app.js
const connection = require('./connection');
const showResult = async () => {
try {
const con = await connection.dbDev();
const result = await con.query(YOUR_QUERY);
con.end();
console.log(result);
} catch (e) {
console.log(e.message);
}
}
showResult();
node-dir 模块注意事项
我知道问题是关于 承诺完成后导出模块 但在 node-dir
模块的情况下也可以 同步 ,也许它会对其他人有所帮助。
read.js
const dir = require('node-dir');
const files = function() {
return dir.files(YOUR_DIR, {sync:true});
}
exports.files = files;
app.js
const read = require('./read');
try {
const res = read.files();
console.log(res);
} catch (e) {
console.log(e.message);
}
我实际上想将 "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);
})
我该怎么做?我试过 "return new promise..." 并将整个东西放在 getFile 函数中,但它没有 return 任何东西。
我做错了什么?
这是我的代码
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);
});
希望对您有所帮助。
Async/Await接近
promise-mysql
模块的示例。
connection.js
const mysql = require('promise-mysql');
const dbDev = async () => {
return await mysql.createConnection({
host: YOUR_MYSQL_HOST,
user: YOUR_MYSQL_USER,
password: YOUR_MYSQL_PASSWORD,
database: YOUR_MYSQL_DB_NAME
});
}
module.exports = {
dbDev
};
app.js
const connection = require('./connection');
const showResult = async () => {
try {
const con = await connection.dbDev();
const result = await con.query(YOUR_QUERY);
con.end();
console.log(result);
} catch (e) {
console.log(e.message);
}
}
showResult();
node-dir 模块注意事项
我知道问题是关于 承诺完成后导出模块 但在 node-dir
模块的情况下也可以 同步 ,也许它会对其他人有所帮助。
read.js
const dir = require('node-dir');
const files = function() {
return dir.files(YOUR_DIR, {sync:true});
}
exports.files = files;
app.js
const read = require('./read');
try {
const res = read.files();
console.log(res);
} catch (e) {
console.log(e.message);
}