在循环中使用async
/ 是否有任何问题?我试图遍历文件数组和每个文件的内容。await``forEach``await
import fs from 'fs-promise'
async function printFiles () {
const files = await getFilePaths() // Assume this works fine
files.forEach(async (file) => {
const contents = await fs.readFile(file, 'utf8')
console.log(contents)
})
}
printFiles()
这段代码确实有效,但是这可能会出问题吗?我让某人告诉我,您不应该在这样的高阶函数中使用async
/ await
,所以我只是想问一下这是否有问题。
确保代码确实有效,但是我很确定它不会执行您期望的功能。它只会触发多个异步调用,但printFiles
此后函数会立即返回。
如果要顺序读取文件, 则不能使用forEach
。只需使用现代for … of
循环即可,该循环await
将按预期工作:
async function printFiles () {
const files = await getFilePaths();
for (const file of files) {
const contents = await fs.readFile(file, 'utf8');
console.log(contents);
}
}
如果要并行读取文件,
则不能使用forEach
。每个async
回调函数调用的确会返回一个Promise,但是您将其丢弃而不是等待它们。只需使用map
,您就可以等待将获得的诺言数组Promise.all
:
async function printFiles () {
const files = await getFilePaths();
await Promise.all(files.map(async (file) => {
const contents = await fs.readFile(file, 'utf8')
console.log(contents)
}));
}
我使用的php foreach语句如下所示:
我有一个webservice,它加载一些插件并调用它们的过程方法。其中一个插件获取成员列表,并确保它们都包含在MailChimp列表中。 在正常的过程代码中,这不会是一个问题。但是,httpClient上唯一可用的Post方法是PostAsync。对于Async/Await来说,我是相当陌生的,我不确定我的其余代码会有什么影响……特别是因为它涉及到我试图重用httpClient而不是为每个http
foreach循环遍历列表值并将控制变量(var)依次设置为列表的每个元素 - 语法 (Syntax) Perl编程语言中foreach循环的语法是 - foreach var (list) { ... } 流程图 (Flow Diagram) 例子 (Example) #!/usr/local/bin/perl @list = (2, 20, 30, 40, 50); # foreach lo
问题内容: 在循环中使用/ 是否有任何问题?我试图遍历文件数组和每个文件的内容。 这段代码确实有效,但是这可能会出问题吗?我让某人告诉我,您不应该在这样的高阶函数中使用/ ,所以我只是想问一下这是否有问题。 问题答案: 确保代码确实有效,但是我很确定它不会实现您期望的功能。它只会触发多个异步调用,但此后函数会立即返回。 顺序阅读 如果要顺序读取文件, 则不能使用。只需使用现代循环即可,该循环将按预
除了前面介绍的几种循环语句外,C# 同样也支持 foreach 循环,使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下: foreach(数据类型 变量名 in 数组或集合对象){ 语句块; } foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到 里定义的变量中,直到所有元素都成功取出后退出循环。 【示例】使用 foreach 循环
本文向大家介绍C# Foreach循环,包括了C# Foreach循环的使用技巧和注意事项,需要的朋友参考一下 示例 foreach将迭代实现的类的任何对象IEnumerable(请注意IEnumerable<T>从其继承的对象)。此类对象包括一些内置对象,但不限于:List<T>,T[](任何类型的数组),Dictionary<TKey, TSource>以及诸如IQueryable和IColl