Javascript对象集,其属性是返回承诺的函数调用

Javascript对象集,其属性是返回承诺的函数调用,javascript,angularjs,Javascript,Angularjs,这里的总体思路是,在初始化每个列时,使用其查找数据填充该列。条目数据是一个异步填充的列表,它是列可以具有的所有可能值,预先填充以避免用户实际尝试在客户端上填充该列时出现任何长时间等待 我希望在LookUpdateAsyncReturnsPromise解析时,entries属性最终会被数据列表填充,但是通过角度模板化,entries属性在屏幕上始终显示为{}。我可以在控制台日志中看到每个单独的url调用。我怀疑我正在遭受某种形式的关闭,明白了吗。这是一件明智的事情吗 我知道这个javascript

这里的总体思路是,在初始化每个列时,使用其查找数据填充该列。条目数据是一个异步填充的列表,它是列可以具有的所有可能值,预先填充以避免用户实际尝试在客户端上填充该列时出现任何长时间等待

我希望在LookUpdateAsyncReturnsPromise解析时,entries属性最终会被数据列表填充,但是通过角度模板化,entries属性在屏幕上始终显示为{}。我可以在控制台日志中看到每个单独的url调用。我怀疑我正在遭受某种形式的关闭,明白了吗。这是一件明智的事情吗

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

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;
}

我想你打算这样做

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);
})

查找将始终返回一个承诺,您可以执行promise.all,然后在中以数组形式获取数据。然后使用promises的.then方法从中提取数据。有关更多信息,请参阅。谢谢大家,我感到困惑,因为http请求返回承诺,并且在将它们分配给scope objectsAngularJS表达式时,angular会毫无问题地呈现它们。自版本1.2.0-rc.3以来,承诺的表达式解包已被弃用。有关更多信息,请参见.ES6承诺未与AngularJS框架集成。只有在AngularJS执行上下文中应用的操作才会受益于AngularJS数据绑定、异常处理、属性监视等。相反,请使用。