首页 > 解决方案 > 我怎样才能返回这个数组的第一个元素?

问题描述

数组 blobstream 如下所示:

blobstream = [1,2,3]

我只想通过每个循环返回一个数组第一个循环:1 第二个循环:2 第三个循环:3

最好的解决方案是什么?谢谢伊甸园

 async function main() {
        let i = 1;
    
        for await (const blob of containerClient.listBlobsFlat()) {
            const blockBlobClient = containerClient.getBlockBlobClient(blob.name);
    
            const downloadBlockBlobResponse = await blockBlobClient.download(0);
            const download = await blobToString(await downloadBlockBlobResponse.blobBody);
            console.log(download);
            blobstream.push(download);
        }
        return blobstream;
    }

标签: node.jsarraysangulartypescript

解决方案


听起来您正在寻找一个异步生成器函数(例如containerClient.listBlobsFlat(),它似乎也是一个异步生成器函数)。看起来像这样:

async function* main() {
//            ^−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− generator function
    for await (const blob of containerClient.listBlobsFlat()) {
        const blockBlobClient = containerClient.getBlockBlobClient(blob.name);

        const downloadBlockBlobResponse = await blockBlobClient.download(0);
        const download = await blobToString(await downloadBlockBlobResponse.blobBody);
        console.log(download);
        yield download;
//      ^^^^^−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− yield a result
    }
}

异步生成器函数返回异步生成器,您可以在for-await-of循环中(或直接)使用它:

for await (const value of main()) {
    // Here, `value` will be each value yielded by the generator
}

这是一个setTimeout用于模拟异步部分的示例:

const delay = (ms, value) => new Promise(resolve => setTimeout(resolve, ms, value));

async function somethingAsync(value) {
    await delay(Math.random() * 1000 + 200);
    return value * 2;
}

async function* main() {
    for (const value of [1, 2, 3, 4]) {
        const x = await somethingAsync(value);
        yield x;
    }
}

(async () => {
    try {
        console.log("Start");
        for await (const x of main()) {
            console.log(x);
        }
        console.log("End");
    } catch (e) {
        console.error(e.message || String(e));
    }
})();


推荐阅读