gpt4 book ai didi

javascript - Promise 异步调用

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:09 25 4
gpt4 key购买 nike

我是 Node js 新手,并试图了解如何进行异步调用。我正在尝试将函数包装到 promise 中以使其异步。为简单起见,该函数只是一个需要时间的循环:

var p = new Promise(resolve => {
for (let i=0;i<999999999;i++){}
resolve('foo')
});

p.then(function (value) { console.log(value);});
console.log('bar');

我期待看到:

bar//立即打印

foo//循环结束后打印

相反,它们都是在循环完成后打印的。如何让循环 block 异步运行?

诗。对于缩进/格式表示歉意,我不得不通过手机写这篇文章。

谢谢

最佳答案

您似乎假设“异步代码”涉及并发性,即代码将同时在另一个线程中运行。事实并非如此。除非你故意启动另一个线程,否则 JS 本身将在单个线程中运行。因此,无论您对 Promise 做什么:要么先运行循环,然后运行日志,要么先运行日志,然后运行循环。

您还可以通过多任务处理实现并发执行:如果您在中间停止循环,其他代码可以同时运行:

 (async function() {
while(true) {
console.log("loop");
await Promise.resolve();
}
})();

console.log("in the meantime");

关于javascript - Promise 异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56379560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com