Jeff的隨手筆記

學習當一個前端工程師

0%

用LeetCode寫日記-Day13

天氣變冷了…好不想起床

Day13: Sleep

問題描述:Given a positive integer millis, write an asynchronous function that sleeps for millis milliseconds. It can resolve any value.

問題難度:Easy

問題限制:

1 <= millis <= 1000

我的解題過程:

看到題目第一個直截反應就是用setTimeout

1
setTimeout( code , millis)

現在的問題就是 code 要放什麼,原本我誒直接放變數就可以,但出來的結果卻是錯誤的。

這時突然看到測試有提到**It should return a promise that resolves after 100ms**.想說是不是要用promise來做

因此改成:

1
2
3
return new Promise((res) => {
setTimeout(() => res(), millis)
})

確實答案跑出來是正確的,但有誤差。

但系統判正確,但想說還是試試看解答的答案是不是也會這樣

確實也存在誤差,那就沒問題了

完整答案

1
2
3
4
5
6
async function sleep(millis) {
return await new Promise((res) => {
setTimeout(() => res(), millis)
})

}

其他解答

1
2
3
4
5
6
7
8
9
async function sleep(millis) {
return new Promise((delayresolve, reject) => {
if (typeof millis !== 'number' || isNaN(millis)) {
reject(new Error('Invalid argument. Expected a number.'));
} else {
setTimeout(delayresolve, millis);
}
});
}

結論

這個題目問了蠻多問題,有promise、setTimeout、async function/await,解完後還是需要把這幾個再做一次複習加深印象。