【问题标题】: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));
}
})();