以下代码正在访问API
“行”是一个对象,具有指向其他2个对象的链接
代码跟随链接在每个链接的另一端抓取对象,并从每个链接的对象检索整数属性值“ Cost”。然后将这些值求和并将结果写入原始对象的Total属性。
问题在于它的行为不可靠。有时它会正确地分配总和,但有时它只分配其中一个链接对象的值,而不是两个对象之和。
我在最里面的嵌套回调函数中执行了两次赋值,而不是在链接循环后执行一次赋值,因为由于JavaScript的异步性,我不知道如何在回调之外进行赋值-但我认为它甚至仍然可以工作尽管我可能没有按照应有的方式做。
结果的不可预测性表明这是一个异步性问题。
非常感谢收到任何建议。谢谢您对菜鸟的耐心。
function getLinks(row)
{
RM.Data.getLinkedArtifacts(row, [], function(linksResult)
{
var linkedArtifactsTotal = 0;
linksResult.data.artifactLinks.forEach(function(linkDefinition)
{
linkDefinition.targets.forEach(function(target)
{
getAttrVal(target, "Cost", function(result)
{
linkedArtifactsTotal = linkedArtifactsTotal + result;
varStrResult = linkedArtifactsTotal + "";
setAttrVal(row, "Total", varStrResult)
});
});
});
});
}
function getAttrVal(ref, attrName, callback)
{
RM.Data.getAttributes(ref, attrName, function(result)
{
var attributes = result.data;
attributes.forEach(function(attr)
{
var attrVal = attr.values[attrName];
callback(attrVal);
});
});
}
function setAttrVal(ref, attrName, newValue)
{
// function that sets an attribute value
}