【问题标题】:how can I return the first element of this array?我怎样才能返回这个数组的第一个元素?
【发布时间】:2020-12-19 10:07:53
【问题描述】:

数组 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.js arrays angular typescript


    【解决方案1】:

    听起来您正在寻找async generator function(例如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));
        }
    })();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 2016-10-06
      • 1970-01-01
      相关资源
      最近更新 更多