利用promise实现隔1秒输出1,输出1后,然后再隔2秒输出2.....直到再隔10秒输出10.
时间: 2024-02-13 07:01:27 浏览: 16
可以使用循环和`Promise`的`then`方法来实现:
```javascript
function printNumber(num) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(num);
resolve();
}, num * 1000);
});
}
let promise = Promise.resolve();
for (let i = 1; i <= 10; i++) {
promise = promise.then(() => printNumber(i));
}
```
首先定义一个`printNumber`函数,它返回一个`Promise`对象,使用`setTimeout`实现隔一定时间后输出数字并解决`Promise`对象。然后使用一个循环,每次迭代都将当前数字传递给`printNumber`函数,然后使用`then`方法将返回的`Promise`对象链式连接起来。由于`printNumber`函数的延迟时间是根据数字自动计算的,因此会依次输出1到10。
相关问题
使用promise实现每隔一秒输出1,2,3
```javascript
function count() {
return new Promise(function(resolve, reject) {
let i = 0;
setInterval(function() {
i++;
console.log(i);
if (i === 3) {
clearInterval(this);
resolve();
}
}, 1000);
});
}
count();
```
node.js 运用worker_threads多线程每隔五秒输出日志
可以使用以下代码实现:
```javascript
const { Worker } = require('worker_threads');
function runService(workerData) {
return new Promise((resolve, reject) => {
const worker = new Worker('./worker.js', { workerData });
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', (code) => {
if (code !== 0)
reject(new Error(`Worker stopped with exit code ${code}`));
});
});
}
async function run() {
const workerData = { interval: 5000 };
const result = await runService(workerData);
console.log(result);
}
run();
```
其中,`worker.js` 是一个独立的 JavaScript 文件,用于处理具体的多线程逻辑。在这个文件中,可以使用 `setInterval` 函数每隔一定时间输出日志,例如:
```javascript
const { workerData, parentPort } = require('worker_threads');
setInterval(() => {
parentPort.postMessage('Logging...');
}, workerData.interval);
```
这样,每隔五秒钟就会输出一条日志。