阿里筆試題
題目
ajaxArray是一個非同步請求陣列,完成mergePromise函式達到以下輸出,並返回一個Promise物件
const ajax1 = () => timeout(2000).then(() => { console.log('1') return 1 }) const ajax2 = () => timeout(1000).then(() => { console.log('2') return 2 }) const ajax3 = () => timeout(2000).then(() => { console.log('3') return 3 }) const mergePromise = ajaxArray => {} mergePromise([ajax1, ajax2, ajax3]).then(data => { console.log('done'); console.log(data); }); 分別輸出 1 2 3 done [1, 2, 3] */
題目分析
ajaxArray是一個非同步請求陣列,其中執行時間不定,而要達到將資料按執行順序儲存到陣列,自然可以想到Async/await,可以依次執行陣列各項,並返回一個Promise
程式碼
let timeout = time => { return new Promise((resolve, reject) => { setTimeout(_ => resolve(), time) }) } const ajax1 = () => timeout(2000).then(() => { console.log('1') return 1 }) const ajax2 = () => timeout(1000).then(() => { console.log('2') return 2 }) const ajax3 = () => timeout(2000).then(() => { console.log('3') return 3 }) const mergePromise = ajaxArray => { return new Promise((resolve, reject) => { async function asyFun(ajaxArray) { let data = [] for (let key in ajaxArray) { await ajaxArray[key]().then(d => { data.push(d) }) } return data } asyFun(ajaxArray).then(valueArray => { resolve(valueArray) }) }) } mergePromise([ajax1, ajax2, ajax3]).then(data => { console.log('done') console.log(data) // data 為 [1, 2, 3] })
另一種解法---非原創
const ajax1 = () => timeout(2000).then(() => { console.log('1') return 1 }) const ajax2 = () => timeout(1000).then(() => { console.log('2') return 2 }) const ajax3 = () => timeout(2000).then(() => { console.log('3') return 3 }) const mergePromise = ajaxArray => { return new Promise((resolve, reject) => { //返回一個新的Promise let arr = [] //定義一個空陣列存放結果 let i = 0 function handleData(index, data) { //處理資料函式 arr[index] = data i++ if (i === ajaxArray.length) { //當i等於傳遞的陣列的長度時 resolve(arr) //執行resolve,並將結果放入 } } function handlePromise(i) { if (i >= ajaxArray.length) return ajaxArray[i]().then(data => { handleData(i, data) //將結果和索引傳入handleData函式 handlePromise(i + 1) }, reject) } handlePromise(0) // for (let i = 0; i < ajaxArray.length; i++) { //迴圈遍歷陣列 // ajaxArray[i]().then((data) => { // handleData(i, data); //將結果和索引傳入handleData函式 // }, reject) // } }) } mergePromise([ajax1, ajax2, ajax3]).then(data => { console.log('done'); console.log(data); // data 為 [1, 2, 3] });
相關推薦
基於LRU演算法的快取池——阿里筆試題
這是一題2011年阿里實習生招聘的筆試題,感覺不錯,拿來給大家分享一下,原題如下: 在進入我的淘寶頁面時,此頁面需要獲取登入的使用者的相關資訊,在訪問量少的情況下,可以採用直接訪問資料庫的方式,但當訪問量太高時,會導致資料庫壓力過高,因此通常採取的方法為將使用者資訊進行快取
阿里筆試題
題目 ajaxArray是一個非同步請求陣列,完成mergePromise函式達到以下輸出,並返回一個Promise物件 const ajax1 = () => timeout(2000).then(() => { console.lo
計算最小跨度(阿里筆試題)
題目:給定兩個由數字0-9組成的字元陣列,如“2345”, “4436”,從這兩個陣列分別取數,生成新陣列。比如生成:44234365,生成方式如下圖所示,每個陣列取數放入新陣列的時候,是按照下標從小到大取得。對於字元陣列,定義跨度值:K(c),為數字c最大下標和最小下標之差
數組合並問題(阿里筆試題,動態規劃)
咋一看到本題,首先想到的是窮舉法,後來跑測試資料時,程式執行效率很慢,無法滿足本題要求。後來想到本題是屬於典型的動態規劃問題,找出計算公式,將大問題轉化為小問題求解,本題的邊界情況比較多,找出全部的邊界情況是難點。問題分析:(1)求出公式:當陣列長度n=1時,f(a1,b1)
一道阿里筆試題解析--程式調優
下列方法中,____不可以用來程式調優? A.改善資料訪問方式以提升快取命中率 B.使用多執行緒的方式提高 I/O 密集型操作的效率 C.利用資料庫連
2018阿里筆試題一道
八卦陣相傳是由諸葛亮創設的一種戰鬥隊形和兵力部署,由八種陣勢組成。為了方便,採用矩陣來描述一個八卦陣,它由八個單陣組成,每個單陣由多個兵力區域組成形成一種陣勢,如下圖所示,其中數字為一個兵力區域的士兵個數。假設單陣與單陣之間兵力區域不會相鄰,且單陣中每個兵力區域至少存在一個相
阿里筆試題(2017線上程式設計題)-- 數串分組
題目 2017年3月阿里線上程式設計題(實習內推) 給定一串數字 判斷是否存在這三個元素,它們將數字串分為四個子串,其中每個子串的數字之和均相同(該3個元素不納入計算) 要求時間複雜度和空間複雜度均不能超過O(n) 實現
阿里筆試題-城堡問題
這個題目我兩次筆試都遇到了,貼出來紀念一下吧。。。歡迎指正 【8月22:發現有問題,需要重新修改】 將軍大勝歸來, 奪取很多城堡(xi, yi)。國王向將軍許諾, 你站在任意的城堡上, 選擇任意角度,看得見的城堡都是你的,包括你站的城堡,但頭不能動但。而且不
記某一次阿里面試的實時筆試題
某次面試阿里雲,要求實時寫一個小程式,要求如下: 1.兩個執行緒,一個執行緒生產者,一個執行緒是消費者 2.生產者生產票,超過10張就休息,被消費了就繼續生產。 3.消費者消費票,票沒了之後就休息,有票了接著消費。 題目看著很簡單,但卻包含了很多考點:訊息佇列、執行緒、執行緒通訊
阿里秋招筆試題——求冰田區域
問題描述 將一個區域,分成 m×n 個塊,若某一個塊有冰則用 * 表示,無冰則用 0 表示,任給一個這樣的區域,求冰田區域(冰田區域劃分規則:如果兩個小塊之間能夠在不穿越其他塊的情況下連成直線,則**屬於同一冰田區塊)個數? 輸入
阿里資料分析師實習生筆試題2014年3月29日
時間為90分鐘 題型:10道選擇,3道簡答,2道分析題 回憶版 選擇題: 1)若 r=0,則兩者的關係: 我選擇的是 沒有線性關係 2)以下兩種行為分別對應哪種分類演算法的評價標準: 行為1:警察如何判別某人是小偷 行為2:小偷是如何被識別出來(+_+行為
大資料阿里面試筆試題總結,我的結果 當然是涼涼
我 秀兒 在學習大資料一年後去了阿里面試,這是我筆試的時候題目,雖然我涼了,但是希望大家加油 總結給大家看看 參考下面的M R系統的場景:HDFS 塊大小為64MB;輸入型別為FileInputFormat;有三個檔案大小分別是: 0.在Hadoop中定義的
阿里巴巴筆試題
1、有一個虛擬儲存系統,若程序在記憶體中佔3頁(開始時記憶體為空),若採用先進先出(FIFO)頁面淘汰演算法,當執行如下訪問頁號序列後1,2,3,4,5,1,2,5,1,2,3,4,5,會發生多少缺頁?A、7 B、8
阿里巴巴集團2014秋季校園招聘筆試題
轉載請標明出處,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11931173第一部分 單選題(前10題,每題2分;後10題,每題3分,共50分,選對得滿分,選錯倒扣1分,不選得0分)1、假設把整數關鍵碼K雜湊到有N
2016阿里安全工程師實習生招聘筆試題
一共十道問答題 2. 1)請描述一下fuzz的主要思想和優缺點 2)近幾年,很多Linux核心提權漏洞都和核心驅動的ioctl函式相關;請設計一套fuzz方案,對其進行漏洞挖掘。 3.給你的APP做一個手勢密碼的功能,忽略UI部分的實現,請從安全的角度出發,描述你的實現
阿里p7筆試題
1. junit用法,before,beforeClass,after, afterClass的執行順序 2. 分散式鎖 3. nginx的請求轉發演算法,如何配置根據權重轉發 4. 用hashmap實現redis有什麼問題(死鎖,死迴圈,可用ConcurrentHas
阿里java校招筆試題——程式碼塊中語句的執行順序
下面是阿里java校招的一道筆試題,程式碼如下: public class HelloA { //構造方法 public HelloA(){ System.out.println("Hello A!父類構造方法"); } //非靜態
2017春招網際網路產品經理筆試題整理|騰訊,阿里,京東,網易,頭條,去哪兒,攜程,人人
騰訊: 1.分析一款你最喜歡的app,他的產品定位,目標使用者,競爭優勢,還有哪些可以改進的地方? 2.VR AR AI時代,設計一套智慧生活解決方案 阿里: 筆過之後沒有進行記錄,因此印象比較模糊:(3道大題) 大概20道選擇,基本都是技術相關
阿里巴巴2015秋季校園招聘前端開發工程師線上筆試題及答案
前幾天是阿里巴巴秋季校園招聘線上筆試的第一天,本著學習和共享的精神,本人上網百度了其中一份前端線上筆試題,並且寫出了自己的答案,發上來,供大家參考。 總的來說,這一次的題目相比以前的題目,最大的特點是新,居然直接考了nodejs,這是出乎很多人的意料的。廢話不多說,接下
阿里巴巴2018實習生-前端開發工程師筆試題
今天晚上7點到8點剛經歷過阿里的前端筆試,時間60分鐘,總共10道選擇(5道單選,5道多選),2道問答,1道程式設計。 不得不說阿里的門檻真高,看到選擇題的時候就懵逼了,“這是啥這是啥??”好多都沒見過,可能我太菜啦,瞬間感覺知識於我就像宇宙於我般渺茫,後邊繼續