标签: for-await

等待 VS Promise.all

这有什么区别吗:

const promises = await Promise.all(items.map(e => somethingAsync(e)));
for (const res of promises) {
  // do some calculations
}
Run Code Online (Sandbox Code Playgroud)

和这个 ?

for await (const res of items.map(e => somethingAsync(e))) {
  // do some calculations
}
Run Code Online (Sandbox Code Playgroud)

我知道在第一个片段中,所有的承诺都被同时触发,但我不确定第二个。for 循环是否等待第一次迭代完成以调用下一个 promise ?还是所有的 Promise 都是同时触发的,循环内部就像是它们的回调?

javascript node.js promise async-await for-await

24
推荐指数
3
解决办法
2万
查看次数

javascript 中断 for-await 循环完成生成器

我编写了这段代码来迭代具有特定数字(如分页)的 github 问题,在本例中一次有 3 个问题:

const getUrl = (page) => `https://api.github.com/repos/angular/angular/issues?page=${page}`;

const getIssues = async function*() {
    for (let p = 1; true; p++) {
        const url = getUrl(p);
        const rawData = await fetch(url, {
            headers: { 'User-Agent': 'app' }
        });
        const issues = await rawData.json();
        for (let issue of issues) {
            yield issue;
        }
    }
};

const generator = getIssues();

document.querySelector('[data-next]').addEventListener('click', async function() {
    let i = 0;
    for await (let issue of generator) {
        console.log(issue);
        if (++i === …
Run Code Online (Sandbox Code Playgroud)

javascript generator for-await

5
推荐指数
1
解决办法
648
查看次数

Dart - 在 for 循环中等待所有异步任务

我在 Dart 中有一个对象列表,我想对这些对象中的每一个执行异步操作。当所有异步操作完成后,我想执行最后一个操作。我目前正在使用如下代码执行此操作:

for (int i = 0; i < myObjectList.length; i++) {
  await myAsynchronousOperation(myObjectList[i]);
}
doFinalOperation();
Run Code Online (Sandbox Code Playgroud)

虽然这在技术上可行,但我认为它效率低下,因为 for 循环将等待第一个异步操作完成后才开始第二个异步操作。因此,根据我的理解,我们最终会同步触发异步操作,这不可能是异步编程的意图。

因此,我的问题是,是否可以以某种方式立即触发所有异步操作,然后等到它们全部完成,然后最后执行最终操作。提前致谢!

asynchronous for-loop async-await dart for-await

4
推荐指数
1
解决办法
1477
查看次数