【发布时间】:2016-11-13 22:30:27
【问题描述】:
我有一个数字列表,我想创建一个 JSON 对象数组,这些对象是通过从 api 查询数字而创建的。例如,如果数字是
numbers = [1, 4];
然后我想要一个像这样创建的 JSON 对象:
[{
number: 1,
data: $.getJSON('/api/numbers/1')
},
{
number: 4,
data: $.getJSON('/api/numbers/4')
}]
我认为最简单的方法是将数字列表映射到相应的 JSON 对象:
numbers_data = numbers.map(n => {number: n, data: $.getJSON('/api/numbers'+ n)})
但是,一旦我拥有带有嵌入式 $.getJSON 承诺的 numbers_data,我不确定如何判断所有 api 调用何时完成。是否有一种模式可以让我判断变量 numbers_data 何时完全解析,以便我可以对其进行处理?
【问题讨论】:
-
您可以
$.when将承诺“组合”成一个,然后附加一个回调以了解一切何时完成。 -
最后,你希望你的对象包含 promise 还是 AJAX 调用返回的 JSON 数据?]
-
我希望对象包含返回的数据。是的,这就是我使用
$.when的内容,但我觉得它太复杂了:promises = numbers.map(function(n){ return ($.getJSON('numbers/'+n)); }) datasets = numbers.map(function(n){ return {number: n, data: null}; }); $.when(promises).then(data) { for(var i=0; i -
如果 jqueries 的 promise 是 'thenable' 你可以使用 ES6 Promise.all。
标签: jquery json promise getjson