node.js - 我怎样才能返回这个数组的第一个元素?
问题描述
数组 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));
}
})();
推荐阅读
- ubuntu - 无法读取 /.conkyrc : 是一个目录
- outlook-restapi - Office 365 事件列表请求仅返回两个事件
- java - 如何只允许用户输入字符并进行验证?
- python - 根据其他条件更改while条件 - Python
- c++ - “线程安全数据”与“线程安全代码/函数”之间的区别
- laravel - Laravel 6 Webpack 问题编译 VueJS 应用程序
- java - 当我在 mongodb 中手动设置 _id 时,@CreatedDate 不起作用
- python - 约束非线性优化,值应为 0.125 的倍数
- sql - 在 SQL 中拆分日期
- python-3.x - 我使用python制作了一个项目,可以检测图像中的对象,但我需要为输入/输出做GUI