一起创业网-为互联网创业者服务

js怎么让程序等待

在JavaScript中,如果你想要让代码暂停执行一段时间,你可以使用`setTimeout`函数或者结合`async/await`和`Promise`来实现。以下是几种常见的方法:

使用`setTimeout`函数

`setTimeout`是一个异步函数,它允许你在指定的延迟时间后执行一段代码。下面是一个简单的示例:

```javascript

console.log('开始');

setTimeout(function() {

console.log('一秒钟后执行的代码');

}, 1000);

console.log('结束');

```

在这个例子中,控制台将首先打印"开始",然后立即打印"结束",最后在一秒钟后打印"一秒钟后执行的代码"。

使用`async/await`和`Promise`

你可以创建一个返回`Promise`的`sleep`函数,然后在`async`函数中使用`await`来等待一段时间。下面是一个示例:

```javascript

function sleep(time) {

return new Promise(resolve => setTimeout(resolve, time));

}

async function example() {

console.log('开始');

await sleep(1000);

console.log('一秒钟后执行的代码');

console.log('结束');

}

example();

```

在这个例子中,`example`函数会等待1秒钟,然后继续执行并打印出相应的消息。

使用`for..of`循环和`Promise`

你还可以在`for..of`循环中使用`await`来等待一段时间。下面是一个示例:

```javascript

const fun = (prop) => {

return new Promise(resolve => setTimeout(() => resolve(`done ${prop}`), 1000));

};

const go = async () => {

const list = [1, 2, 3];

for (const prop of list) {

console.log(prop);

console.log(await fun(prop));

}

console.log('done all');

};

go();

```

在这个例子中,`go`函数会迭代数组`list`,并在每次迭代后等待1秒钟。

建议

使用`setTimeout`:适用于简单的延迟操作,不需要返回值的情况。

使用`async/await`和`Promise`:适用于需要返回值或者需要更清晰异步代码结构的情况。

避免使用`while`循环进行等待:如示例2中的`sleep`函数,虽然可以工作,但会导致CPU资源的浪费,因为它会不断地检查时间。

选择哪种方法取决于你的具体需求和代码的上下文。