我正在使用javascript访问数据库的API,这是我的功能之一
function getAttrVal(ref, attrName)
{
var result = "null"
RM.Data.getAttributes(ref, attrName, function(result)
{
var attributes = result.data;
attributes.forEach(function(attr)
{
var attrVal = attr.values[attrName];
println("Check " + attrVal) // here it is printing 'Check 5' which is correct since attrVal should equal '5'
result = attrVal;
});
});
return result; // but here it returns the value 'null'
}
如何返回变量“结果”为5。
这似乎是一个可变范围的问题。
TIA
是的,我是使用JavaScript的傻瓜!
答案 0 :(得分:0)
tldr;没错,这是一个可变范围界定问题。
您有2个变量定义为结果,一个在forEach迭代范围内,另一个在父范围内。 尝试重命名迭代变量:
function getAttrVal(ref, attrName){
var result = "null";
RM.Data.getAttributes(ref, attrName, function(_result)
{
var attributes = _result.data;
attributes.forEach(function(attr)
{
var attrVal = attr.values[attrName];
println("Check " + attrVal) // here it is printing 'Check 5' which is correct since attrVal should equal '5'
result = attrVal;
});
});
return result; // but here it returns the value 'null'
}