3 回答

TA貢獻1777條經驗 獲得超10個贊
您將立即獲得未定義的記錄。
很明顯,您正在嘗試編寫一個sleep()異步函數,但請記住 setTimeout 是一個同步函數,使用回調函數調用將在給定時間執行,因此在您執行test()時,調用將運行到結束,return undefined就像您有函數體中沒有 return 語句,它將被傳遞給你的.then()函數。
正確的方法是返回一個在給定時間后解決的 Promise,這將繼續then調用。
async function sleep(time){
return new Promise((resolve,reject) => {
setTimeout(() => {
resolve("echo str")
},time)
})
}
sleep(5000).then((echo) => console.log(echo))
簡而言之睡眠功能
const sleep = async time => new Promise(resolve=>setTimout(resolve,time))

TA貢獻1877條經驗 獲得超6個贊
承諾
const setTimer = (duration) => {
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Done!');
}, duration);
});
return promise;
};
setTimer(2000).then((res) => console.log(res));
添加回答
舉報