我是node.js的新手,正在尝试创建一个小型API。我正在使用Express进行路由,并使用async.jc逐步处理呼叫。当只有一个请求进来时,这很好用,但是当我尝试从我的计算机上触发2个或更多请求时,进程将变量中的值混合在一起并崩溃。
这是我的摘录中的简短片段:
router.get('/new', function (request, res) {
async.waterfall([
function(callback) {
// get a unique domain
client.spop('domainSet', function(err, domain) {
userdata = {
email: 'user' + '@' + domain + '.' + mydomain,
password: randomstring.generate(10),
username: domain,
name: domain,
confirm: "false"
}
if (err) return next(err);
callback(null, userdata, userdata.password);
})
},
function(userdata, userpwd, callback) {
myapp.users.create(userdata, function(user) {
console.log('Creating new user: ' + userdata.email);
callback(null, user, userpwd);
});
},
如何保持每个请求的“上下文/范围”?我确定我错过了一些东西(-:还是我从同一台机器上发出请求的唯一问题??
userdata
需要在第一个瀑布函数中声明该函数,否则它具有全局作用域。
router.get('/new', function (request, res) {
async.waterfall([
function(callback) {
// get a unique domain
client.spop('domainSet', function(err, domain) {
var userdata = {
email: 'user' + '@' + domain + '.' + mydomain,
password: randomstring.generate(10),
username: domain,
name: domain,
confirm: "false"
}
if (err) return next(err);
callback(null, userdata, userdata.password);
})
},
function(userdata, userpwd, callback) {
myapp.users.create(userdata, function(user) {
console.log('Creating new user: ' + userdata.email);
callback(null, user, userpwd);
});
},
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句