没有内置异步方法的异步 JavaScript

问题描述 投票:0回答:1

我看到的所有关于异步 JavaScript 的例子,当他们使用回调、promise 或带有延迟的异步/等待时,到伪造的例子,比如等待某些东西,使用 setTimeout() 或 setInterval()。如果我没有进入回调、promise 或 async/await 就绪的内置异步代码怎么办?我想伪造延迟,可以用 Date() 以同步方式做到这一点。

这不仅仅是一个如何在不使用 setTimeout() 或 setInterval() 的情况下睡眠/延迟的问题。这只是一个示例,希望看到异步 JavaScript 代码而不调用内置异步方法。

我的同步代码是:

const sleep = (milliseconds) => {
    let t0 = Date.now();
    const t1 = Date.now() + milliseconds;
    console.log(`Sleeping ${milliseconds} milliseconds`);
    while (t0 <= t1) {
        t0 = Date.now();
    }
};

const randomMilliseconds = () => {
    return Math.round(Math.random() * 10000);
};

const returnElement = () => {
        sleep(randomMilliseconds());
        console.log(element);
    };

const elements = [1, 2, 3, 4, 5];

function loopElements() {
    for (element of elements) {
        returnElement();
    }
}

loopElements();

我读到了有关异步函数的内容,并认为我可以使用 LoopElements() 或 returnElement() 来做到这一点,但无法做到。此外,我看到的有关异步循环的所有示例都是使用 setTimeout() 或使用其他内置异步解决方案,例如从 API 获取数据。

这可以做到吗?只需一个简单的 Date() 示例即可。

javascript async-await promise callback asynchronous-javascript
1个回答
1
投票

你不能。

通过使用异步功能,您可以获得异步功能。

如果您将自己限制在同步功能上,那么您只能获得同步结果。

© www.soinside.com 2019 - 2024. All rights reserved.