我正在开发一个 nodeJS 应用程序,我无法像我定义的那样在正常流程中调用函数。
console.log('1')
require('../models/userModel')(UserCtrl);// inside this file i have console.log('2')
console.log('3')
但我得到 1个 3个 2个 而不是 1 2个 3个 这是我的 userModel 代码
var Waterline = require('waterline'),
config = require('../config/db'),
_ = require('lodash')
orm = new Waterline()
module.exports = function(refContObj){
var User = Waterline.Collection.extend({
identity: 'user',
connection: 'myLocalDBConn',
attributes: {
first_name: 'string',
last_name: 'string'
}
});
orm.loadCollection(User);
orm.initialize(config,function(err, models){
refContObj.models = models.collections;
console.log('2')
});
}
谢谢
最佳答案
orm 对象的初始化方法是异步的。这意味着控制权将交给异步方法后面的代码,即 console.log('3') 语句,当初始化方法完成时,将调用包含 console.log('2') 的回调。
require('../models/userModel')(UserCtrl, main);
function main() {
console.log('3');
}
userModel代码应该是:
var Waterline = require('waterline'),
config = require('../config/db'),
_ = require('lodash')
orm = new Waterline()
module.exports = function(refContObj, cb){
var User = Waterline.Collection.extend({
identity: 'user',
connection: 'myLocalDBConn',
attributes: {
first_name: 'string',
last_name: 'string'
}
});
orm.loadCollection(User);
orm.initialize(config,function(err, models){
refContObj.models = models.collections;
console.log('2');
cb();
});
}
关于javascript - 为什么功能流程不正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28294444/