摘要:面試題題目頁面上有一個輸入框,兩個按鈕,按鈕和按鈕,點擊或者分別會發(fā)送一個異步請求,請求完成后,結果會顯示在輸入框中。
面試題題目
頁面上有一個輸入框,兩個按鈕,A按鈕和B按鈕,點擊A或者B分別會發(fā)送一個異步請求,請求完成后,結果會顯示在輸入框中。
題目要求,用戶隨機點擊A和B多次,要求輸入框顯示結果時,按照用戶點擊的順序顯示,舉例:
用戶點擊了一次A,然后點擊一次B,又點擊一次A,輸入框顯示結果的順序為先顯示A異步請求結果,再次顯示B的請求結果,最后再次顯示A的請求結果。
思考當時被問到的時候,幾個想法
寫個高階函數(shù),處理異步請求
怎么保證順序,我是想將其放入數(shù)組中,然后按順序執(zhí)行
當時也沒寫出來,但覺得很有意思。回去思考實踐來一下代碼:
/** * A的請求;pA(promise對象) * B的請求;pA(promise對象) * @click 事件函數(shù) handler */ let arr = [] let it function* main() { //進來的是pA,pB封裝后的方法 const data = yield arr.unshift()() if(arr.length > 0) { it = main() it.next() } } it = main() //封裝pA,pB的請求 function pn(promise) { return promise.then(res => it.next(res)) } //當點擊按鈕發(fā)送請求時,將相應的請求加入數(shù)組中 function handler(pn) { arr.push(pn) //數(shù)組不為空說明請求觸發(fā)中 if(arr.length = 0) { it.next() } }
說明
點擊按鈕時,先發(fā)放入請求;數(shù)組為空說明,還沒執(zhí)行;就先執(zhí)行;不為空,則加入數(shù)組中,等待執(zhí)行
利用迭代器,遍歷數(shù)組,執(zhí)行請求
封裝函數(shù)fn,思路來自之前看的Generator的異步請求方式
總結以上是我自己思路,覺得蠻有意思的。寫下來記錄一下
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/105474.html
摘要:但這兩個對象的原型指向了同一個實例對象,這個實例對象同樣是存在棧內(nèi)存中的然后指向了一個對象。實際是在的實例對象增加一個屬性,并將屬性賦值為,但它并沒有修改原型鏈上的屬性。側(cè)重理解的指向問題 直接先貼題目吧 function A() { this.name = a this.color = [green, yellow] } function B() { ...
摘要:正如我標題所說,簡歷被拒。看了我簡歷之后說頭條競爭激烈,我背景不夠,點到為止。。三準備面試其實從三月份投遞簡歷開始準備面試到四月份收,也不過個月的時間,但這都是建立在我過去一年的積累啊。 本文是 無精瘋 同學投稿的面試經(jīng)歷 關注微信公眾號:進擊的java程序員K,即可獲取最新BAT面試資料一份 在此感謝 無精瘋 同學的分享 目錄: 印象中的頭條 面試背景 準備面試 ...
摘要:正如我標題所說,簡歷被拒。看了我簡歷之后說頭條競爭激烈,我背景不夠,點到為止。。三準備面試其實從三月份投遞簡歷開始準備面試到四月份收,也不過個月的時間,但這都是建立在我過去一年的積累啊。 本文是 無精瘋 同學投稿的面試經(jīng)歷 關注微信公眾號:進擊的java程序員K,即可獲取最新BAT面試資料一份 在此感謝 無精瘋 同學的分享目錄:印象中的頭條面試背景準備面試頭條一面(Java+項目)頭條...
摘要:說明最近看到這樣一段代碼問三行的輸出分別是什么覺得有點意思,和大家一起來聊聊。說到這里,這道題基本上可以解決了,希望大家能聽明白我上面說的話,下面的就簡單了。 說明 最近看到這樣一段代碼 function fun(n,o){ console.log(o); return { fun:function(m){ return fun...
閱讀 1091·2021-11-15 18:00
閱讀 2803·2021-09-22 15:18
閱讀 1965·2021-09-04 16:45
閱讀 750·2019-08-30 15:55
閱讀 3853·2019-08-30 13:10
閱讀 1332·2019-08-30 11:06
閱讀 1984·2019-08-29 12:51
閱讀 2294·2019-08-26 13:55