Col*_*rts 1 javascript arrays promise
我有一个使用返回JSON对象的函数hnews.getById(id).然后我将承诺中返回的每个故事推送到一个数组.我无法弄清楚如何获得完整的阵列.我需要使用另一个承诺吗?
function updateTopStories() {
var storiesArr = [];
hnews.getIdsInCategory('topstories', 60)
.then(function(ids) {
ids.forEach(function(id) {
hnews.getById(id).then(function(story) {
console.log(story);
storiesArr.push(story);
});
});
});
return storiesArr;
}
var stories = updateTopStories();
console.log(stories); // Empty array
Run Code Online (Sandbox Code Playgroud)
编辑:我需要storiesArr从updateTopStories();
第二次编辑:我是个白痴.getById正在回归诺言.我觉得是时候睡觉了.请问mod会删除吗?
我可以从这里拿走它.谢谢大家的期待.
您在此处调用多个异步进程.处理此问题的一种常用方法是将您的id数组映射到Promise数组,这些Promise都必须在返回之前解析.看看这是否适合你.
function updateTopStories() {
return hnews.getIdsInCategory('topstories', 60).then(function(ids) {
var promises = ids.map(function(id) {
return hnews.getById(id);
});
return Promise.all(promises);
});
}
updateTopStories().then(function(stories) {
console.log(stories);
});
Run Code Online (Sandbox Code Playgroud)