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

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

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

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

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

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

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

© 2021 V2EX