我正在创建要在我的应用中使用的js节点类,该类消耗了宁静的API。要使用该API,我使用的是节点pckg请求。
var request = require('request');
class Test{
constructor(){
this.var = {};
}
async getVar(){
request.get(url, function(err, resp, body) {
if (!err) {
var res = JSON.parse(body);
this.var = res.var;
console.log(res.var);
} else {
console.log(err);
}
});
}
getVarResult(){
return this.var;
}
}
在get请求中,我可以在console.log中打印变量,结果显示正常。但是在执行getVar()
方法后,如果我调用getVarResult()
,它将继续返回undefined
或empty
。
我知道我可能正在做的事情是在其余上下文中进行设置,而不是在构造函数类上重新分配给this.var
。
我该怎么办?我可以在get request方法内设置一个var,以将其设置为类级别,并可以通过getter类型方法进行访问吗?
答案 0 :(得分:1)
请求不能自行返回Promises,但是您可以将其包装在Promise中以解决此问题,而无需像request-promise-native这样的包
@Override
public void onEvent(Event event) {
String userId = event.getUserId();
RealmModel realm = session.realms().getRealm(event.getRealmId());
UserModel user = session.users().getUserById(userId, realm);
// get all attributes
Map<String, List<String>> allAttributes = user.getAttributes(); // or
// get Attribute by name
String attrubute = user.getFirstAttribute("attributename");
}
例如在您的函数中:
async getVar() {
return new Promise((resolve, reject) => {
request.get(
url,
(err, resp, body) => {
if (!err) {
var res = JSON.parse(body);
this.var = res.var;
console.log(res.var, "resVar");
resolve(true);
} else {
console.log(err);
reject(err);
}
}
);
});
}