使用属性的Javascript对象集,该属性是返回promise的函数调用

时间:2017-08-04 09:35:02

标签: javascript angularjs

这里的一般想法是每个列在初始化时都会填充其查找数据。 “条目”数据是一个异步填充的列表,它是列可以具有的所有可能值,预先填充以避免在用户实际尝试在客户端上填充该列时进行任何长时间等待。

我希望当lookupDataAsyncReturnsPromise结算时,“entries”属性最终将填充数据列表,但是使用角度模板,entries属性始终在屏幕上显示为{}。我可以在控制台日志中看到每个单独的url调用。我怀疑我患有某些关闭问题或其他一些问题。这甚至是一个理智的事情吗?

我知道这个javascript并不是特定于angular,但是它被标记为,因为模板呈现{{column.entries}}返回{}(这是角度渲染承诺的方式吗?)。

for(_index in response.data.data) {
    var lookup = this.lookupDataAsyncReturnsPromise(url, response.data.data[_index].name);
    var _column = {
        "name" : response.data.data[_index].name,
        "entries" : lookup
    };
    columns[_column.name] =_column;
}

1 个答案:

答案 0 :(得分:1)

我认为你打算做这样的事情

let promiseArray = [];
for(_index in response.data.data) {
    promiseArray.push(this.lookupDataAsyncReturnsPromise(url, response.data.data[_index].name));
}

Promise.all(promiseArray).then(function(lookups){
    let idx = 0;
    for(_index in response.data.data) {
            var _column = {
            "name" : response.data.data[_index].name,
            "entries" : lookups[idx]
        };
        idx++;
        columns[_column.name] =_column;
    }
    console.log(columns);
})