我看到的所有关于异步 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() 示例即可。
你不能。
通过使用异步功能,您可以获得异步功能。
如果您将自己限制在同步功能上,那么您只能获得同步结果。