如何在需要同步返回数据的接口中返回一个需要异步获取的数据

2017 年 3 月 2 日
 des
a 、获得数据后,再去启动应用 /插件(明显只适合初始化数据)
b 、预先返回一个空对象,后续再插入
c 、魔改,使其支持 promise 或者再一个回调
d 、实现一个协程(不想吐槽了)

就没有更好的方法了吗?
4400 次点击
所在节点    JavaScript
8 条回复
MinonHeart
2017 年 3 月 2 日
async
await
des
2017 年 3 月 2 日
@MinonHeart 可惜需要编译,不知道能不能编译到 es5
Mikewu
2017 年 3 月 2 日
es5 的话, setTimeout 递归回调吧
duan602728596
2017 年 3 月 2 日
能够编译到 es5 ,不过需要 regenerator-runtime ( npm 下载 babel-polyfill ,里面有这个库)兼容 geneator 函数。
native-promise-only 兼容 Promise 。
CosimoZi
2017 年 3 月 2 日
刚好也遇到这个问题,而且我是需要同步返回数据的接口中需要多个异步获取的参数.希望有不需要编译的原生解决方法..
des
2017 年 3 月 2 日
@CosimoZi 目前看来 a 和 b 是最好的方法了,如果可以的话。
des
2017 年 3 月 2 日
@Mikewu 求问 setTimeout 怎么实现?
JamesRuan
2017 年 3 月 3 日
异步逻辑是个 Monad ,不可能放在同步逻辑内执行的。
最简单的方法就是接口改成返回 Promise 。

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

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

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

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

© 2021 V2EX