📜  如何使用带有 Promise 的 async/await 延迟 JavaScript 中的循环?

📅  最后修改于: 2022-05-13 01:56:50.688000             🧑  作者: Mango

如何使用带有 Promise 的 async/await 延迟 JavaScript 中的循环?

下面给出的是一个 JavaScript 代码片段,它基本上描述了如何使用 async/await 在 JavaScript 中延迟一个循环。在本文中,我们通过 Web 浏览器或 Node.js 使用 JavaScript。我们都面临着在 JavaScript 中延迟循环的困难情况,这与我们有 sleep()函数的 C++ 不同,但在 JavaScript 中没有这样的事情。我们在 JavaScript 中只有 setTimeout()函数,但是当我们在延迟一段时间后有大量代码要执行时,这不是我们要寻找的,因此在 JavaScript 中代码的线性执行会出现冲突。在这里,我们找到了一种适当的异步方式来暂停特定时间的循环,就像我们过去在 C++ 或 C 中所做的那样。

什么是异步和等待?

Async 和 await 使 Promise 更容易编写。 async关键字使函数返回一个 promise:async 关键字主要用于声明函数时。

句法:

async function delay() {
    return new Promise(resolve => {resolve()})
}

await使函数等待 Promise:await 主要用于调用函数时。

句法:

await delay();

方法: Promise实际所做的是将程序执行捕获在其中,直到它没有得到解决,当它在一段时间后得到解决时,它将控制权交还给调用它的 main 方法。

在这里,waitforme函数是帮助我们延迟接受一个参数为毫秒的代码的实际函数,它允许用户在他/她选择的持续时间内延迟代码。

要深入了解 Promise,您应该访问:https://www.geeksforgeeks.org/javascript-promises

您可以直接将下面的代码复制并粘贴到控制台并检查它,或者您可以创建单独的 JavaScript 文件并在 chrome 中加载它或在 Node.js 中尝试

例子:

Javascript
function waitforme(milisec) {
    return new Promise(resolve => {
        setTimeout(() => { resolve('') }, milisec);
    })
}
 
async function printy() {
    for (let i = 0; i < 10; ++i) {
        await waitforme(1000);
        console.log(i);
    }
    console.log("Loop execution finished!)");
}
 
printy();


输出:

注意:我们可以在调用函数时改变waitforme函数的参数值来增加/减少代码中的延迟。