題目
const timeout = ms =>
new promise((resolve, reject) => , ms);
});const ajax1 = () =>
timeout(2000).then(() => );
const ajax2 = () =>
timeout(1000).then(() => );
const ajax3 = () =>
timeout(2000).then(() => );
// 在mergepromise編寫**,使得執行結果為: 1 2 3 done [1,2,3]
const mergepromise = (ajaxarray) =>
mergepromise([ajax1, ajax2, ajax3])
.then(data => );
// 執行結果為: 1 2 3 done [1,2,3]
注意其中的ajax1
的設定的tiemout比ajax2
的長,所以同步執行的話,先輸出2。
呼叫mergepromise
後可執行then
,所以mergepromise
返回promise物件或者async函式
本身也是promise
利用await 將非同步變同步
const mergepromise = async (ajaxarray) =>
return arr
}
promise和await 結合,其實和第一種沒太大區別
const mergepromise = async (ajaxarray) =>
resolve(arr)
})}
問題提問者想出的方法promise和reduce
const mergepromise = (ajaxarray) =>)
});});
})}
很敬佩的一位前端老師的方法,暫時沒理解他的寫法。需要慢慢研究一下不對現有**引入任何的新語法
用到了遍歷器的資料結構
用到了尾遞迴
巧妙的用了你的timeout我用了0構建了 macrotask
用了函式式程式設計最經典的直接掛方法 避開了then
const mergepromise = (ajaxarray) =>
function todo(item) );
}todo.then = (data) => );
todo(ajaxarray[0]);
}return todo;
}
題目肯定都很難,要多想想,不能一開始就放棄,遇到難的東西太多了,只能靠自己去解決。不能給自己想後路,不懂還有其他大神抗著。 前端面試題 ES6
1.反引號 標識 模板字串 template string 是增強版的字串,用反引號 標識,它可以當作普通字串使用,也可以用來定義多行字串,或者在字串中嵌入變數 var name bob time today hello how are you hello bob,how are you today...
阿里一道機械人面試題。
某程式設計師開發出了一款超級智慧型機械人,能對任何提問給出 是 或者 不是 的答案。現有3個這種機械人,其中有數量不定的 0到3個 機械人發生了故障。如果正常機械人總是給出正確的答案,而故障機械人總是給出錯誤的答案。每一回合只能問任意乙個機械人任意乙個問題,那麼至少需要 回合才能確保區分出哪些機械人...
一道阿里面試題 關於print自加的操作結果解釋
int main 輸出結果 335 3兩個要點 printf的操作是從右到左計算表示式的值,將返回值 位址 存入相應的快取區。表示式計算完畢後,將所有快取區按計算順序入棧,依次彈棧輸出。對於返回值,前置 i返回的是i變數本身的位址,而後置i 返回的是臨時快取區的位址 我們知道i 是先返回i再 1 問...