如何用 js 优雅的在前端实现循环多次向后端的 ajax 请求,且这些 ajax 是按顺序发起的

2017-04-06 21:29:24 +08:00
 abcbuzhiming
我现在有个这样的需求,前端页面要循环向服务器发起请求,一个请求结束后再发起下一次,直到循环条件结束。为的是缩短服务器每次处理数据时间,并及时的让客户端逐步看到处理结果,以前用 jquery 做,无非就两个方案: 1.aysnc 改成 false 变成同步请求, 2.递归调用,非常丑陋。现在弃用了 jquery ,用的 axios,这个库没法进行同步请求。那该怎么办,只有递归一条路了吗?
11633 次点击
所在节点    JavaScript
24 条回复
zhouyg
2017-04-07 00:55:24 +08:00
不用库就可以有优雅的写法:
[promiseFn1, promiseFn2,promiseFn3].reduce((promise, fn)=>{
return promise.then(fn);
},promiseFn0() );
coldsnap
2017-04-07 01:40:59 +08:00
```
function each (promises, cb) {
return promises.reduce((promise, task, i) => {
return promise.then(_ => task).then(_ => cb(_, i))
}, Promise.resolve())
}
```

用法和 bluebird 的 each 一样。
ref: http://bluebirdjs.com/docs/api/promise.each.html
dangyuluo
2017-04-07 06:36:50 +08:00
感觉 websocket 才是正解。
ryanzyy
2017-04-07 16:49:10 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/353038

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX