gpt4 book ai didi

javascript - 我如何处理 api 的 javascript/clojurescript 包装器库?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:34:46 24 4
gpt4 key购买 nike

我主要是一名 Python 开发人员,但最近我一直在尝试学习 Clojure/ClojureScript。作为练习,我想为 Reddit 的 API 编写一个 ClojureScript 包装器。

我的大部分困惑是由于 Javascript 的异步特性造成的。由于 AJAX 函数实际上并不从 API 返回响应,我该如何编写包装器才能使其工作方式与同步服务器端请求有些相似?

或者这根本不可能,我必须在我的应用程序中对 API 的每次调用使用回调(因此包装器库将毫无意义)?

是否有类似的库可供我引用? (Javascript/ClojureScript)

最佳答案

可以发出同步 XHR 请求,但这不是惯用的。 Javascript(以及扩展的 Clojurescript)使用单线程执行模型,因此长时间运行的调用通常是异步的,以避免阻塞应用程序其他部分的执行。如果您正在为同步 API 编写包装器,您通常会向每个 API 方法添加一个回调参数(并且不要忘记提供某种形式的错误处理)。

关于您的具体问题,从浏览器访问 reddit API 几乎肯定违反了 same origin policy :您通常只能向提供原始 Javascript 的域发出 AJAX 请求。通常,当您想提供对第三方服务的客户端(基于浏览器)访问时,您可以通过服务器代理客户端请求来实现。服务器应确保它只代理来自授权客户端的请求。如果你决定采用这条路线,你会使用 clojurescript 从你的浏览器向你的网络服务器发出一个异步请求(可能正在运行 clojure),这将对请求进行身份验证,然后向 reddit API 发出一个同步请求并将结果返回给客户。当响应准备就绪时,客户端将调用回调,您的代码将收到结果。

关于javascript - 我如何处理 api 的 javascript/clojurescript 包装器库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15930785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com