这星期做了个报表,统计一堆关键词在Solr的搜索结果数量。一开始是计划写Java代码去访问Solr,并获取各个关键词的查询结果数量。后来为了减轻服务器压力,把数据下载到本地并重建了Solr索引。那为什么不用简单快速的JavaScript?

JavaScript的数据请求,可用原生的XMLHttpRequest,jQuery的$.ajax,或者fetch。记得N年前看过吹嘘fetch的文章,于是就选了fetch玩玩。该文章如下:
传统 Ajax 已死,Fetch 永生
https://github.com/camsong/blog/issues/2

说说感受吧:

1)如果需要“同步”请求,需要配合asyncawait使用,里面还要用到function。一下子不适应,$.ajax只需设置async参数。

2)不支持跨域。尝试按教程去设置fetch请求的Header,仍是不行。简单来说,需要服务端设置可跨域相关。那就简单点,把包含代码的HTML文件丢到Solr的本地站点,然后Chrome访问。

3)Promise语法很新鲜。当然,写得不好,也可以很糟糕。

4)关于错误处理,就不写了,本地请求一般不会出错。

总的来说,没想象中那么牛X,也没那么爽。如果面对一般情况,不想写复杂的XMLHttpRequest,也不想引用庞大的jQuery,不用兼容老版浏览器,fetch是个好家伙。例如这个文章提到:
fetch 没有你想象的那么美
http://undefinedblog.com/window-fetch-is-not-as-good-as-you-imagined/

还有Mozilla的参考教程,说得比较详细:
使用 Fetch - Web API 接口参考 | MDN
https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch

标签: fetch, javascript

添加新评论