1.fetch 详解
2.撬开技术难点!实现Fetch 请求扩展超时功能!
3.Ajax、Fetch、Axios 篇
4.PL/SQL cursorç¨äºFOR LOOPä¹åè¿å¯ä»¥ç¨fetchå
fetch 详解
fetch请æ±åºæ¥äºä¸æ®µæ¶é´,çæçå¨é¡¹ç®ä¸ä½¿ç¨è¿.è¿æ¬¡å¥½å¥½å¦ä¹ æ±æ»ä¸ä¸.
第ä¸: fetchç使ç¨
/github/fetch è¿ä¸ªæ¯fetchçgithub ä¸é¢ç»åºäºfetchç¨æ³.
/api/',这将设置一个Authorization头,iapp短信钓鱼源码覆写掉现有的任意使用headers设置的自定义Authorization头;auth表示HTTP基础验证应当用于连接代理,并提供凭据;这将会设置一个Proxy-Authorization头,覆写掉已有的通过使用header设置的自定义Proxy-Authorization头。
Axios可以说把请求这件事做到了极致,封装的很好用,浏览器支持的方法,除了IE低版本以外,最新版的浏览器都是支持的。
Fetch是http的数据请求方式,是XMLHttpRequest的一种代替方案,没有使用到XMLHttpRequest这个类。好股箱体源码fetch()采用模块化设计,API分散在Response对象、Request对象、Headers对象上。fetch()通过数据流(Stream对象)处理数据,对于请求大文件或者网速慢的场景相当有用。XMLHttpRequest没有使用数据流,所有的redmoon红月源码请求都必须完成后才拿到。在默认情况下fetch不会接受或者发送cookies。
fetch(url,optionObj)基本使用中,fetch参数没有同步的设定,因为fetch是基于promise封装的本身就是异步的。fetch虽然使用的是promise封装,但是catch函数不能直接捕获到错误,需要在第一个then函数内做些操作。fetch发送post请求时,在线拜佛网站源码当发生的是跨域请求,fetch会先发送一个OPTIONS请求,来确认服务器是否允许接受请求,这个请求主要是用来询问服务器是否允许修改header等一些操作。服务器同意后返回,才会发送真正的请求。没有发生跨域的情况下不会产生两次请求。
fetch的thinkphp 酒店预定源码三个模块包括:Response对象、Request对象、Headers对象。
fetch发送post两次请求的原因是在使用fetch发送post请求时如果是跨域,那么导致fetch第一次发送了一个Options请求,询问服务器是否支持修改的请求头,如果服务器支持,则在第二次中发送真正的请求。
fetch的缺点包括:get/head请求不能设置body属性;fetch请求后,服务器返回的状态码无论是多少包括(4xx,5xx),fetch都认为是失败的,也就是使用catch也不能直接捕捉到错误,需要再第一个then中做一些处理。
Ajax、Fetch、Axios综合中,实现一个Ajax可以将原生的Ajax封装成promise。Ajax、Axios、Fetch的区别包括:传统的Ajax利用的是XMLHttpRequest这个对象,和后端进行交互。JQueryAjax是对原生XHR的封装,多请求间有嵌套的话就会出现回调地狱的问题。axios使用promise封装xhr,解决了回调地狱问题。fetch不是XMLHttpRequest,fetch是原生的js,使用的是promise。
fetch使用的是promise方便使用异步,没有回调地狱的问题。要实现一个Ajax请求,可以将原生的Ajax封装成promise。实现两个有顺序的Ajax请求可以使用promise.then()。Ajax解决浏览器缓存问题可以通过设置请求头,例如:anyAjaxObj.setRequestHeader("If-Modified-Since","0") 或 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
PL/SQL cursorç¨äºFOR LOOPä¹åè¿å¯ä»¥ç¨fetchå
ä½ åªä¿®æ¹è¿ç¹ç¹æ¯ä¸å¤çï¼è¿è¦å é¤æFETCH,FOR游æ ä¸ä¸FETCHé å使ç¨ï¼ææè§ä½ 纯粹æ¯å¨ä¹±å
declare
cursor dept_cur is
select deptno, dname from dept where deptno < ;
cursor dept_cur2(pno number) is
select ename, job, hiredate, sal
from emp
where empno <
and deptno = pno;
begin
FOR dept_rec IN dept_cur LOOP
FOR dept_rec2 IN dept_cur2(dept_rec.deptno) LOOP
dbms_output.put_line(dept_rec.deptno || ' ' || dept_rec2.ename || ' ' ||
dept_rec2.job || ' ' ||
to_char(dept_rec2.hiredate, 'YYYY-MM-DD') || ' ' ||
dept_rec2.sal);
END LOOP;
END LOOP;
END;
è¿ä¸ªæ¯æç代ç