我正在发射一个http帖子,并在成功发射另一个帖子。 现在我需要从两个调用中收集响应并进行比较。
我遇到的问题是第二次调用成功写入的代码没有被执行,调试器也表现得很奇怪。只执行第二次成功的第一行代码,这是一个控制台,调试器不会转到其他行。
this._docgenService.getTemplate(alreadyExistingTemplateId).success(
serverTemplate => {
console.log(serverTemplate);
return this._docgenService.getXMLParts(files).success(
localTemplate => {
console.log(localTemplate);
var addItemToMappingContract = true;
for (var i = 0; i < localTemplate.tags.length; i++) {
console.log("for loop");
for (var j = 0; j < serverTemplate.mappings[0].templateElements.contentTexts.length; j++) {
if (localTemplate.tags[i].name === serverTemplate.mappings[0].templateElements.contentTexts[j].name) {
addItemToMappingContract = false;
break;
}
}
if (addItemToMappingContract === true) {
var tempContextText: Mapping.IContentText;
angular.copy(serverTemplate.mappings[0].templateElements.contentTexts[0], tempContextText);
serverTemplate.mappings[0].templateElements.contentTexts.add(
{});
}
}
}
);
})
答案 0 :(得分:0)
当命中成功函数时(在调用第一个异步函数之后),您将返回第二个异步调用。你正在处理第二个承诺而不是执行它。尝试从承诺中删除return
:
this._docgenService.getXMLParts(files).success(
localTemplate => { ...