【发布时间】:2019-01-08 04:55:17
【问题描述】:
我实现了这个sn-p的代码:
var tmpString = null;
this.restProvider.validateUser(this.registerCredentials.email, this.registerCredentials.password)
.then(data => {
tmpString = JSON.stringify(data);
});
console.log(tmpString);
但是,尽管数据不为空,控制台打印一个空值,并且 tmpString 在短时间内设置为正确的值。我该如何解决这个问题?谢谢
真正的作用是:
registerNewUser()
{
var tmpString = null;
this.restProvider.validateUser(this.registerCredentials.email, this.registerCredentials.password)
.then(data => {
tmpString = JSON.stringify(data);
});
console.log(tmpString);
if(tmpString == "false")
{
return false;
}
else
{
this.registerCredentials.email = JSON.parse(tmpString).email;
this.registerCredentials.password = JSON.parse(tmpString).password;
this.email = JSON.parse(tmpString).email;
this.password = JSON.parse(tmpString).password;
}
return this.email + this.password;
}
我用它
public login() {
this.showLoading();
this.registerNewUser();
if(this.email == "false" && this.password == "false")
{
this.showError("Access Denied");
}
else
{
this.auth.login(this.registerCredentials);
this.showError("Access Permit");
}
}
我决定这样做
registerNewUser()
{
var tmpString = null;
this.restProvider.validateUser(this.registerCredentials.email, this.registerCredentials.password)
.then(data => {
tmpString = JSON.stringify(data);
if(tmpString == "false")
{
this.showError("Access Denied");
}
else
{
this.registerCredentials.email = JSON.parse(tmpString).email;
this.registerCredentials.password = JSON.parse(tmpString).password;
this.email = JSON.parse(tmpString).email;
this.password = JSON.parse(tmpString).password;
this.auth.login(this.registerCredentials);
this.showError("Access Permit");
}
});
}
但这是正确的解决方案吗?
【问题讨论】:
-
好吧,在传递给 then() 的回调中打印它。那是初始化数据的时候。您已经知道这与异步有关,因此您应该知道数据只会异步可用,而不是同步可用,因此不会在调用方法后立即可用。
-
对不起,你能发布一个代码示例吗?我是打字稿的傻瓜。非常感谢
-
这称为异步编程。它与 TypeScript 无关。
标签: function typescript asynchronous