一、题目
题目:实现一个函数sleep,先输出A,1秒之后输出B,有什么方案吗?
二、代码实现
思路:
- 方法一:通过Promise实现
- 方法二:async/await
- 方法三:从Generator配合yield进行实现
方法一;通过Promise实现
console.log("A");
function sleep(time) {
return new Promise((resolve) => {
setTimeout(() => {
resolve();
}, time);
});
}
sleep(1000).then(() => {
console.log("B");
});
方法二:async/await
console.log("A");
function sleep2(time) {
return new Promise((reslove, reject) => {
setTimeout(() => {
reslove();
}, time);
}).then(() => {
console.log("B");
});
}
async function sleepAsync() {
await sleep2(1000);
}
sleepAsync();
方法三:从Generator配合yield进行实现
console.log("A");
const sleep = ((time)=>{
return new Promise((resolive)=>{
setTimeout(()=>{
resolve();
},time)
})
})
function* sleepGenerator(time){
yeild sleep(time);
}
sleepGenerator(1000).next().value.then(()=>{
console.log("B");
})
网友评论