用 Promise 封装实现一个延时函数,使其效果和 setTimeout 函数一致。
时间: 2024-03-12 08:50:27 浏览: 30
好的,下面是用 Promise 封装实现一个延时函数的代码:
```javascript
function delay(time) {
return new Promise(function(resolve) {
setTimeout(resolve, time);
});
}
```
这个函数接受一个时间参数 `time`,返回一个 Promise 对象。在函数内部,我们使用 `setTimeout` 函数来实现延时效果,当延时结束后,调用 `resolve` 函数来解决 Promise 对象,表示异步操作成功完成。
使用这个函数可以轻松地实现延时效果,例如:
```javascript
delay(1000).then(function() {
console.log('1 second later');
});
```
这段代码会在延时 1 秒后输出 `'1 second later'`。
相关问题
封装一个promise函数
我可以为您提供一个简单的promise函数的示例:let promise = new Promise(function(resolve, reject) {
// 这里写异步操作
setTimeout(function() {
// 异步操作执行成功,调用resolve
resolve('success');
}, 1000);
});promise.then(function(value) {
// success
console.log(value);
}, function(error) {
// failure
console.log(error);
});
封装一个promise的同步函数
好的,我可以为您提供一个封装 Promise 的同步函数代码:
```
function syncPromise(promise) {
let result;
promise.then(res => {
result = res;
});
while(result === undefined) {
// 等待 promise 执行完毕
}
return result;
}
```
使用方法:
```
const promise = new Promise(resolve => {
setTimeout(() => {
resolve('Hello World!');
}, 1000);
});
const result = syncPromise(promise);
console.log(result); // 输出:Hello World!
```
请注意,这个函数是一个同步函数,但是因为它需要等待 Promise 执行完毕,所以它可能会阻塞当前进程。如果您的 Promise 需要等待很长时间才能完成,使用这个函数可能会导致程序卡死,所以请谨慎使用。