繁体   English   中英

我怎样才能返回这个数组的第一个元素?

[英]how can I return the first element of this array?

数组 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;
    }

听起来您正在寻找一个异步生成器函数(例如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)); } })();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM