等待Angular Factory资源调用完成内部for循环

时间:2016-01-22 18:26:59

标签: javascript angularjs angular-promise

您好我一直在尝试使用promise技术等待for循环中的调用执行。但是我无法坚持下去。

“return mainArr”给出未定义的

//导出CSV

循环

//Assumes data is a json object list.

function getCustomData(data){

            var mainArr=[];
            for (var i = 0; i < data.length; i++) {
                var obj={};
                obj.word = $('#type-ahead-input').val();
                obj.synonym = data[i].word;
                obj.similarityCount = (data[i].similarityCount).toFixed(2);
                obj.emailCount = data[i].occuranceCount;
                obj.synonymlist = getSynonymList(data[i].word);
                mainArr.push(obj);

            }
            return mainArr;
        }
        function getSynonymList(inputWord){
            return WordService.getSynonymList({
                ids : inputWord
            }).$promise
                    .then(function($response) {
                        var output = $response;

                        var wordList =[];
                        for (var i = 0; i < output.length; i++) {
                            wordList.push(output[i].word);
                        }

                        return wordList;
                    });
        }

工厂资源呼叫签名

getSynonymList : {

        method : 'GET',
        isArray: true,
        async  : false,
        url : appRoot + '/synonym',
        params : {
            word : '@word'
        }
    },

1 个答案:

答案 0 :(得分:1)

您需要将值推送到promises数组中,并使用<th rowspan="3">#</th>来解析多个承诺

.table {
    border: 1px solid #ccc;
}

.table td,
.table tr,
.table th {
    border: 1px solid #ccc;
}

然后您可以使用回调

调用返回值
<h1>TEST</h1>

<table class="table">
    <thead>
        <tr>
            <th rowspan="3">#</th>
            <th rowspan="3">Title 1</th>
            <th colspan="3">Title 2</th>
        </tr>
        <tr>
            <th>I</th>
            <th>II</th>
            <th>III</th>
        </tr>
        <tr>
            <th>- Lorem ipsum dolor.<br> - Lorem ipsum dolor<br> - Lorem ipsum dolor </th>
            <th>Lorem ipsum dolor</th>
            <th>Lorem ipsum dolor</th>
        </tr>
    
    </thead>
    <tbody>
        <tr>
            <td rowspan="2">1</td>        
            <td>Lorem ipsum dolor<sup>*1</sup><br> a)lorem ipsum dolor</td>
            <td>Lorem ipsum dolor</td>
            <td>Lorem ipsum dolor</td>
            <td>Lorem ipsum dolor</td>
        </tr>
        <tr>
            <td>b) Lorem ipsum dolor</td>
            <td>Lorem ipsum dolor</td>
            <td>Lorem ipsum dolor</td>
            <td>Lorem ipsum dolor</td>
        </tr>       
    </tbody>
</table>  

这适用于您的两个函数,因为您正在使用循环。 (请注意,我没有实现上面的代码,但应该为您提供一个大纲)