我创建了一个模块,这个模块有一个从mongodb中检索数据的函数,现在假设我有一个返回JSON对象的函数,我将从另一个模块调用这个函数。
DataServiceLayer.js:
function getData(id) {
...;
return data;
}
App.js:
function retrieve(callback) {
var fetchedData = callback;
console.log(fetchedData);
}
retrieve(require('./DataServiceLayer')(id))
但是,我总是为fetchedData获取一个未定义的变量,我想因为node.js所做的异步过程,我怎样才能得到我的结果并将其打印出来?
由于
答案 0 :(得分:0)
以这种方式做事
DataServiceLayer.js:
getData(id){........}
module.exports.getData = getData;
App.js
var getData = require('./DataServiceLayer.js').getData;
function retrive(id){
return getData(id);
}
答案 1 :(得分:0)
嗯......提供的信息有限......我只能给你一个通用答案。
在data.js
中// In general, yopu give callbacks to Async functions.
// In node callbacks have signature - callback( error, result )
function getData( id, callback ) {
someAsyncGetDataFunction( {id : id}, callback );
}
module.exports = getData;
在App.js中
var getDataFunc = require( './data' )
function retrieveAndLogToConsole( id ) {
var myCallback = function( err, result ) {
if ( err ) { console.log( "error" ); }
else { console.log( result ); }
}
getDataFunc( id, myCallback );
}