我是JavaScript新手。在下面的代码中,当我登录时,我尝试从数据库中获取用户信息并将其存储在user
对象中。但是,当我在commandManager
范围内检查用户时,它变为null
。如何使user
而不是null
?
这里是代码:
function LogInCommand(username, password) {
return new Command(function (user) {
api
.logIn(username, password)
.then(function (data) {
user = data;
console.log(user);
})
.catch(function (error) {
console.log(error);
});
});
}
function createCommandManager() {
var user = null;
return {
execute: function (command, ...args) {
command.execute(user, ...args);
},
user: user
};
}
commandManager.execute(new LogInCommand("[email protected]", "123456"));
setTimeout(function() {
console.log(commandManager.user);
}, 10000);
这里是结果:
{age: 21, connection: null, email: "[email protected]", name: "andy", pendingConnection: null, …}
null
感谢大家的帮助!
因为您直接更改了user
变量。它将破坏参考,将无法正常工作。如果您想用自己的方式做到这一点。您可以像下面那样更改代码。
function LogInCommand(username, password) {
return new Command(function (initialData) {
api
.logIn(username, password)
.then(function (data) {
initialData.user = data;
console.log(initialData.user);
})
.catch(function (error) {
console.log(error);
});
});
}
function createCommandManager() {
var initialData = {
user: null,
};
return {
execute: function (command, ...args) {
command.execute(initialData, ...args);
},
user: initialData.user
};
}
commandManager.execute(new LogInCommand("[email protected]", "123456"));
setTimeout(function() {
console.log(commandManager.user);
}, 10000);