使用success成功的angularjs中的连续http调用

时间:2016-06-20 08:15:03

标签: javascript angularjs

我正在发射一个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(
                                {});
                            }
                        }


                    }

                    );


                })

1 个答案:

答案 0 :(得分:0)

当命中成功函数时(在调用第一个异步函数之后),您将返回第二个异步调用。你正在处理第二个承诺而不是执行它。尝试从承诺中删除return

 this._docgenService.getXMLParts(files).success(
                    localTemplate => { ...