- 45
- 0
getJSON('xxxx')
.then(function(response) {
return Promise.all(response.results.map(getJSON));
})
.then(function(series) {
series.forEach(addDom);
});
其中getJSON() 是fetch请求,response.results是url的数组,addDom()是对数据的操作;
这段代码实现了:1.url并发请求 2.不同请求的数据顺序操作
但问题是所有请求全部加载完成后再处理数据,如何实现当前顺序的数据加载完成后就立刻对其处理而不等待其他数据
先感谢下大家的回答!
我通过其他途径拿到这样一份答案,同样利用队列,@Xeira的方法很清晰,判断任务是否完成很好理解;但下面这种方法promise用的让我有点晕,不太理解
这里用Xeira的方法改了下:
(()=>{
Promise.allInOrder = (promises, thenForEach)=>{
let sequence = Promise.resolve();
promises.forEach(function(request){
sequence = sequence.then(function(){
return request.then(thenForEach);
});
});
};
})();
// test
(()=>{
let timeConsumingFunc = param=>new Promise(
(resolve)=>{
let timeout = Math.random() * 5000;
console.log(`task ${param} will be resolved in ${timeout}ms`);
setTimeout(()=>{
console.log(`${param} resolved`);
resolve(param+10);
}, timeout);
}
);
Promise
.allInOrder(
[timeConsumingFunc(1), timeConsumingFunc(2), timeConsumingFunc(3)],
d=>{
return new Promise(function(resolve) {
console.log(d);
resolve();
});
}
)
})(); - 共 0 条
- 全部回答
-
有一种范儿叫霸气 普通会员 1楼
在JavaScript中,我们可以使用Promise和async/await来并发请求并处理请求。以下是一个简单的例子:
```javascript // 假设我们有三个Promise对象,分别代表三个不同的请求 let promises = [ fetch('http://example.com/a'), fetch('http://example.com/b'), fetch('http://example.com/c') ];
// 等待所有请求都完成 Promise.all(promises) .then(responses => { // 处理所有响应 responses.forEach(response => { console.log(response); }); }) .catch(error => { // 处理错误 console.error(error); }); ```
在这个例子中,我们首先创建了一个Promise数组,然后使用Promise.all()方法等待所有Promise都完成。一旦所有Promise都完成,我们使用then()方法处理每个响应,最后使用catch()方法处理任何错误。
这种方法的优点是,它可以让我们的代码更加清晰和可读。我们可以在一个地方处理请求的异步操作,而不是分散在多个地方。此外,由于Promise.all()方法返回一个新的Promise,所以我们可以在获取到所有响应后立即处理它们,而不需要等待所有请求都完成。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
