第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

阿里前端面試:ajax的底層實(shí)現(xiàn)?

阿里前端面試:ajax的底層實(shí)現(xiàn)?

慕萊塢森 2018-08-01 14:10:53
剛才阿里電話面試,聊了一下協(xié)議,問:https里面能發(fā)送http請求嗎?對https沒接觸過,這個(gè)問題理所當(dāng)然沒有底氣回答了;緊接著就問ajax協(xié)議(模糊記得他說的是ajax協(xié)議,有“協(xié)議”倆字,不是十分肯定了,但ajax不是一種技術(shù)嗎??),問ajax底層怎么實(shí)現(xiàn)的???一下就懵掉了!當(dāng)他問底層怎么實(shí)現(xiàn)的時(shí)候,我在想:XMLHttpRequest這個(gè)東西怎么實(shí)現(xiàn)的,用到什么協(xié)議,我確實(shí)沒了解過,書本上好像也沒說過。面試完之后我查了一下,我發(fā)現(xiàn)大多數(shù)博客就是寫的用原生js怎么發(fā)送ajax請求的:難道他問的就是怎么用原生js發(fā)送ajax請求嗎?我的天哪,這個(gè)問題我都能倒背如流啊(;′⌒`)so,請路過的大神解惑,謝謝:1.https里面能發(fā)送http請求嗎?2.ajax底層怎么實(shí)現(xiàn)的?3.ajax和http協(xié)議的關(guān)系?補(bǔ)充點(diǎn)其他的問題供吃瓜群眾參考:1.講到跨域的時(shí)候,我說了postMessage,然后問:postMessage的實(shí)現(xiàn)原理是什么?GG...2.還是跨域相關(guān)的,我講到了jsonp,原理肯定要說一下的,然后問:callback函數(shù)的名字能不能重復(fù)?如果能重復(fù),怎么區(qū)別?比如,a、b兩個(gè)請求,callback名字一樣,怎樣去區(qū)分返回的數(shù)據(jù)是a的還是b的3.textarea和input有什么區(qū)別4.用一個(gè)div模擬textarea的實(shí)現(xiàn)5.一個(gè)頁面dom節(jié)點(diǎn)太多,會出現(xiàn)什么問題(應(yīng)該是卡頓),怎么優(yōu)化其他的不太記得了,整個(gè)面試過程感覺被虐得體無完膚。html我一直以為除了語義化沒啥可問的了,可我們聊了有二十分鐘的html吧,很多問題,也是見識了。。。
查看完整描述

2 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

要底層實(shí)現(xiàn)?給你底層C++的偽代碼。

[Exposed=(Window,DedicatedWorker,SharedWorker)]

interface XMLHttpRequestEventTarget : EventTarget {

  // event handlers

  attribute EventHandler onloadstart;

  attribute EventHandler onprogress;

  attribute EventHandler onabort;

  attribute EventHandler onerror;

  attribute EventHandler onload;

  attribute EventHandler ontimeout;

  attribute EventHandler onloadend;

};


[Exposed=(Window,DedicatedWorker,SharedWorker)]

interface XMLHttpRequestUpload : XMLHttpRequestEventTarget {

};


enum XMLHttpRequestResponseType {

  "",

  "arraybuffer",

  "blob",

  "document",

  "json",

  "text"

};


[Constructor,

 Exposed=(Window,DedicatedWorker,SharedWorker)]

interface XMLHttpRequest : XMLHttpRequestEventTarget {

  // event handler

  attribute EventHandler onreadystatechange;


  // states

  const unsigned short UNSENT = 0;

  const unsigned short OPENED = 1;

  const unsigned short HEADERS_RECEIVED = 2;

  const unsigned short LOADING = 3;

  const unsigned short DONE = 4;

  readonly attribute unsigned short readyState;


  // request

  void open(ByteString method, USVString url);

  void open(ByteString method, USVString url, boolean async, optional USVString? username = null, optional USVString? password = null);

  void setRequestHeader(ByteString name, ByteString value);

           attribute unsigned long timeout;

           attribute boolean withCredentials;

  [SameObject] readonly attribute XMLHttpRequestUpload upload;

  void send(optional (Document or BodyInit)? body = null);

  void abort();


  // response

  readonly attribute USVString responseURL;

  readonly attribute unsigned short status;

  readonly attribute ByteString statusText;

  ByteString? getResponseHeader(ByteString name);

  ByteString getAllResponseHeaders();

  void overrideMimeType(DOMString mime);

           attribute XMLHttpRequestResponseType responseType;

  readonly attribute any response;

  readonly attribute USVString responseText;

  [Exposed=Window] readonly attribute Document? responseXML;

};


查看完整回答
反對 回復(fù) 2018-08-06
?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

A:你在看Ajax底層實(shí)現(xiàn),沒必要吧? 
B:有必要,招人面試時(shí)裝B用。

PS:恭喜你從coding farmer升級為coding chef

其實(shí)對于Ajax理解幾個(gè)關(guān)鍵詞就夠了,異步/回調(diào)/線程,至于怎么做的,真的沒必要太深入。

你這么理解:

Ajax是告訴瀏覽器給我要發(fā)送一個(gè)HTTP請求,你給我新開個(gè)線程去執(zhí)行下,完事后告訴我一聲,我在其他function中執(zhí)行后續(xù)操作(回調(diào))。在線程返回結(jié)果前,我可以繼續(xù)做其他事情。(異步

Ajax的工作原理,如圖:

https://img1.sycdn.imooc.com//5b671fb700014ea305690324.jpg

查看完整回答
反對 回復(fù) 2018-08-06
  • 2 回答
  • 0 關(guān)注
  • 1399 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號