请实现下面的 sleep 方法
ts
/**
* @file 返回一个 Promise,并在 ms 毫秒后 Promise 变为完成状态
*/
export function sleep(ms: number): Promise<undefined> {
// 补全此处代码
throw new Error('功能待实现');
}
async function main(){
console.log('a')
await sleep(1000);
console.log('b');
await sleep(1000);
console.log('c');
}
main()
export default {}参考答案:
ts
/**
* @file 返回一个 Promise,并在 ms 毫秒后 Promise 变为完成状态
*/
export function sleep(ms: number): Promise<undefined> {
// 参考答案
return new Promise(
(
resolve: (value: undefined) => void,
reject: (value: undefined) => void
) => {
setTimeout(() => {
resolve(undefined);
}, ms);
}
);
}
async function main() {
console.log("a");
await sleep(1000);
console.log("b");
await sleep(1000);
console.log("c");
}
main();
export default {};题目要点:
作答思路:
创建一个Promise,并在指定的毫秒数后将其解决(即变为完成状态)。
- 创建Promise:使用
new Promise创建一个新的Promise实例。 - 设置超时:使用
setTimeout设置一个定时器,指定在多少毫秒后执行回调函数。 - 解决Promise:在定时器到期时,调用
resolve函数,并传入一个值(在这个例子中,传入undefined)。 - 处理拒绝:虽然在这个例子中没有使用
reject函数,但你可以添加错误处理逻辑,例如当定时器设置有误时拒绝Promise。 - 返回Promise:最后,返回这个
Promise实例。